From ba6ee8d863e7868ea3250745c3701f0685d6530b Mon Sep 17 00:00:00 2001 From: Syphax bouazzouni Date: Tue, 5 Dec 2023 23:33:28 +0100 Subject: [PATCH] Merge to master: Release 2.7.0.2 - Adds all the view components, with previews in the lookbook (#336) * Merge pull request #234 from ontoportal-lirmm/feature/update-footer-design Feature: Update footer design * Merge pull request #249 from ontoportal-lirmm/feature/update-account-page-submited-onto Feature: Update account page submitted ontologies * Merge pull request #236 from ontoportal-lirmm/feature/lookbook Feature: Add Lookbook to preview components * Merge pull request #242 from ontoportal-lirmm/feature/lookbook Feature: Add Lookbook to preview view components - fix the new version release * Merge pull request #262 from ontoportal-lirmm/feature/add-rounded-button-component-to-lookbook Feature: Add rounded button to lookbook * Merge pull request #248 from ontoportal-lirmm/feature/add-notification-message-component Feature: Add notification message component * Merge pull request #268 from ontoportal-lirmm/feature/add-submission-fields-components Feature: Add submission fields components * Merge pull request #288 from ontoportal-lirmm/feature/add-upload-ontology-components-to-lookbook Feature: Add form inputs components to lookbook * Merge pull request #284 from ontoportal-lirmm/feature/update-nested-from-input-component-design Feature: Update nested form input component design * Merge pull request #282 from ontoportal-lirmm/feature/extract-search-input-component Feature: Extract search input component * Merge pull request #296 from ontoportal-lirmm/feature/re-organize-lookbook Feature: Re organize lookbook previews * Merge pull request #305 from ontoportal-lirmm/feature/add-table-component Feature: Add table component & Migrate the views to use it * Merge pull request #312 from ontoportal-lirmm/feature/extract-search-input-component Feature: Extract search input component - follow up * Merge pull request #313 from ontoportal-lirmm/fix/nested-from-component-empty-state Fix: Nested form component empty state * Merge pull request #301 from ontoportal-lirmm/feature/add-switch-input-preview Feature: Add switch input preview * Merge pull request #304 from ontoportal-lirmm/feature/add-link-text-components Feature: Add link text components * Merge pull request #310 from ontoportal-lirmm/feature/update-select-component Feature: update select component * Merge pull request #300 from ontoportal-lirmm/feature/add-modal-link-component Feature: Add modal component preview and helpers * Merge pull request #303 from ontoportal-lirmm/feature/add-pill-button Feature: Add pill button * Merge pull request #297 from ontoportal-lirmm/feature/add-tabs-component Feature: Add tabs component * Merge pull request #306 from ontoportal-lirmm/feature/add-circle-progress-bar-component Feature: Add circle progress bar component (style, JS, code and preview) * Merge pull request #247 from ontoportal-lirmm/feature/update-agroportal-primary-color Feature: Update AgroPortal primary color * Merge pull request #319 from ontoportal-lirmm/feature/extract-form-input-components Feature: Extract form input components * Merge pull request #324 from ontoportal-lirmm/feature/add-summary-page-components Feature: Extract summary page components * Merge pull request #314 from ontoportal-lirmm/add-buttons-components-to-lookbook Feature: Add buttons components to lookbook * Feature: Add progress pages component (#328) * add progress pages component * put again the type argument for button component * fix progress pages item not center if test is long * make progress pages container take full width by default * Fix progress item position (first & last one) to be aligned with the content * fix progress item checked state to show the icon and the good background * make the progress page component preview width bigger --------- Co-authored-by: Bilel Kihal <61744974+Bilelkihal@users.noreply.github.com> * Merge pull request #259 from ontoportal-lirmm/feature/add-other-states-to-card-message-component Feature: Add warning state to card message component * Merge pull request #238 from ontoportal-lirmm/feature/update-nav-bar-design Feature: Update nav bar design * Merge pull request #331 from ontoportal-lirmm/feature/update-404-error-design Feature: Update 404 error design * Merge pull request #263 from ontoportal-lirmm/feature/update-nav-bar-design Fix: replace nav_bar css nav-link to top-nav-nav-link to prevent conflicts --------- Co-authored-by: Bilel Kihal <61744974+Bilelkihal@users.noreply.github.com> --- Gemfile | 3 +- Gemfile.lock | 2 + app/assets/images/arrow-down.svg | 3 + app/assets/images/arrow-right-outlined.svg | 3 + app/assets/images/arrow-right.svg | 3 + app/assets/images/check-outlined.svg | 4 + app/assets/images/danger.svg | 3 + app/assets/images/edit.svg | 8 + app/assets/images/errors/agroportal.svg | 91 +++ app/assets/images/eye.svg | 4 + app/assets/images/flags32.png | Bin 89104 -> 0 bytes app/assets/images/home-random-bubbles.svg | 82 +++ app/assets/images/icons/alert-triangle.svg | 1 + app/assets/images/icons/alert.svg | 5 + app/assets/images/icons/archive.svg | 1 + app/assets/images/icons/arrow-left.svg | 4 + app/assets/images/icons/calendar.svg | 3 + app/assets/images/icons/circle-down.svg | 4 + app/assets/images/icons/circle-left.svg | 4 + app/assets/images/icons/circle-right.svg | 4 + app/assets/images/icons/circle-up.svg | 4 + app/assets/images/icons/close.svg | 6 + app/assets/images/icons/delete.svg | 3 + app/assets/images/icons/error-icon.svg | 1 + app/assets/images/icons/error.svg | 1 + app/assets/images/icons/external-link.svg | 3 + app/assets/images/icons/github.svg | 3 + app/assets/images/icons/google.svg | 3 + app/assets/images/icons/info.svg | 4 + app/assets/images/icons/internal-link.svg | 3 + app/assets/images/icons/keycloak.svg | 6 + app/assets/images/icons/law.svg | 4 + app/assets/images/icons/list-tree.svg | 3 + app/assets/images/icons/list.svg | 6 + app/assets/images/icons/loop.svg | 4 + app/assets/images/icons/orcid.svg | 3 + app/assets/images/icons/plus.svg | 3 + app/assets/images/icons/popup-link.svg | 3 + app/assets/images/icons/publication.svg | 7 + app/assets/images/icons/success-icon.svg | 1 + app/assets/images/icons/success.svg | 3 + app/assets/images/icons/white-check.svg | 5 + app/assets/images/icons/zoom-center.svg | 4 + app/assets/images/icons/zoom-in.svg | 4 + app/assets/images/icons/zoom-out.svg | 4 + app/assets/images/info.svg | 3 + app/assets/images/json.svg | 3 + app/assets/images/layout/asc.png | Bin 0 -> 2912 bytes app/assets/images/layout/desc.png | Bin 0 -> 2915 bytes app/assets/images/list-tree.svg | 1 - app/assets/images/logo-white.svg | 3 + .../images/logos/collaboration/cnrs_logo.jpg | Bin 185446 -> 0 bytes .../images/logos/collaboration/d2kab.png | Bin 0 -> 5232 bytes .../images/logos/collaboration/d2kab_logo.png | Bin 12217 -> 0 bytes .../images/logos/collaboration/inrae.png | Bin 0 -> 4793 bytes .../images/logos/collaboration/inrae_logo.jpg | Bin 9230 -> 0 bytes .../images/logos/collaboration/lirmm.png | Bin 0 -> 5146 bytes .../images/logos/collaboration/lirmm_logo.png | Bin 86558 -> 0 bytes .../images/logos/collaboration/ontoportal.png | Bin 0 -> 194753 bytes .../images/logos/collaboration/sifr_logo.jpg | Bin 6344 -> 0 bytes .../stanford-university_logo.png | Bin 121975 -> 0 bytes .../images/logos/collaboration/stanford.png | Bin 0 -> 15057 bytes app/assets/images/logos/ontoportal.svg | 3 + .../supports/agropolisfondation_logo.png | Bin 29060 -> 0 bytes app/assets/images/logos/supports/anr.png | Bin 0 -> 9952 bytes app/assets/images/logos/supports/anr_logo.png | Bin 9198 -> 0 bytes app/assets/images/logos/supports/eu.png | Bin 0 -> 3469 bytes app/assets/images/logos/supports/ibc_logo.jpg | Bin 10343 -> 0 bytes .../images/logos/supports/msca_eu_logo.jpg | Bin 44126 -> 0 bytes app/assets/images/logos/supports/numev.png | Bin 0 -> 4328 bytes .../images/logos/supports/numev_logo.png | Bin 10345 -> 0 bytes app/assets/images/loop.svg | 3 + app/assets/images/ontoportal-icon.svg | 3 + app/assets/images/orange-warning.svg | 5 + app/assets/images/play-white.svg | 3 + app/assets/images/play.svg | 3 + app/assets/images/reload.svg | 10 + app/assets/images/social/api.svg | 3 + app/assets/images/social/email.svg | 1 + app/assets/images/social/github.svg | 3 + app/assets/images/social/people.svg | 3 + app/assets/images/social/sparql.svg | 11 + app/assets/images/social/twitter.svg | 10 + app/assets/images/success.svg | 3 + app/assets/images/summary/arrow-down.svg | 3 + app/assets/images/summary/documentation.svg | 1 + app/assets/images/summary/download.svg | 1 + app/assets/images/summary/homepage.svg | 1 + app/assets/images/summary/sparql.svg | 11 + app/assets/images/update.svg | 3 + app/assets/images/upload-file.svg | 3 + app/assets/images/upload.svg | 3 + app/assets/images/warning.svg | 3 + app/assets/images/white-check.svg | 3 + app/assets/images/x.svg | 3 + app/assets/javascripts/application.js | 1 - app/assets/javascripts/bioportal.js.erb | 2 +- app/assets/javascripts/bp_search.js.erb | 6 +- app/assets/javascripts/ontologies.js | 95 --- .../javascripts/tooltipster.bundle.min.js | 2 - app/assets/stylesheets/account.scss | 8 +- app/assets/stylesheets/agents.scss | 4 + .../stylesheets/application.css.scss.erb | 13 +- app/assets/stylesheets/bioportal.scss | 66 ++- app/assets/stylesheets/browse.scss | 15 +- app/assets/stylesheets/components/alert.scss | 84 +++ app/assets/stylesheets/components/card.scss | 5 + .../stylesheets/components/card_message.scss | 4 + .../stylesheets/components/chip_button.scss | 27 + app/assets/stylesheets/components/chips.scss | 6 +- .../components/circle_progress_bar.scss | 26 + .../components/concept_details.scss | 9 + .../stylesheets/components/dropdown.scss | 17 + .../components/field_container.scss | 23 + .../components/file_input_loader.scss | 54 ++ app/assets/stylesheets/components/header.scss | 16 + app/assets/stylesheets/components/image.scss | 22 + app/assets/stylesheets/components/index.scss | 28 +- .../stylesheets/components/input_field.scss | 95 +++ app/assets/stylesheets/components/modal.scss | 20 + .../stylesheets/components/nested_form.scss | 55 ++ .../stylesheets/components/notification.scss | 146 +++++ .../components/outline_tabs_container.scss | 27 + .../stylesheets/components/pill_button.scss | 32 + .../components/pill_tabs_container.scss | 22 + .../components/primary_button.scss | 101 ++++ .../components/progress_pages.scss | 118 ++++ .../components/regular_button.scss | 213 +++++++ .../components/rounded_button.scss | 17 + .../stylesheets/components/search_input.scss | 45 ++ .../components/summary_section.scss | 12 + app/assets/stylesheets/components/switch.scss | 64 ++ app/assets/stylesheets/components/table.scss | 37 ++ .../components/tabs_container.scss | 57 ++ .../components/text_area_field.scss | 14 + app/assets/stylesheets/concepts.scss | 123 +++- app/assets/stylesheets/edit-ontology.scss | 146 +++++ app/assets/stylesheets/file_uploader.scss | 53 -- app/assets/stylesheets/footer.scss | 61 +- app/assets/stylesheets/home.scss | 473 +++++++++++++++ app/assets/stylesheets/login.scss | 30 +- app/assets/stylesheets/nav_bar.scss | 194 +++++++ app/assets/stylesheets/ontologies.scss | 34 +- .../stylesheets/ontology_details_header.scss | 110 ++++ app/assets/stylesheets/ontology_viewer.scss | 25 + app/assets/stylesheets/register.scss | 14 +- app/assets/stylesheets/submissions.scss | 7 + app/assets/stylesheets/summary.scss.erb | 216 +++++++ .../stylesheets/theme-variables.scss.erb | 44 +- .../stylesheets/themes/agroportal/main.scss | 4 +- .../themes/lirmm/bootstrap_overrides.scss | 4 + .../stylesheets/themes/lirmm/flags32.scss | 245 -------- app/assets/stylesheets/themes/lirmm/main.scss | 26 - .../tooltipster-sideTip-borderless.min.scss | 1 - .../themes/tooltipster-sideTip-light.min.scss | 1 - .../themes/tooltipster-sideTip-noir.min.scss | 1 - .../themes/tooltipster-sideTip-punk.min.scss | 1 - .../tooltipster-sideTip-shadow.min.scss | 1 - .../themes/lirmm/tooltipster.bundle.min.scss | 1 - .../stylesheets/themes/ontoportal/main.scss | 6 +- .../stylesheets/themes/stageportal/main.scss | 4 +- app/assets/stylesheets/upload_ontology.scss | 106 ++++ .../agent_search_input_component.rb | 14 + .../agent_search_input_component.html.haml | 11 + app/components/alert_message_component.rb | 9 - .../alert_message_component.html.haml | 8 - .../primary_button_component.html.haml | 23 + .../buttons/regular_button_component.rb | 49 ++ .../regular_button_component.html.haml | 11 + app/components/card_message_component.rb | 6 +- .../card_message_component.html.haml | 8 +- app/components/chip_button_component.rb | 9 + .../chip_button_component.html.haml | 6 + app/components/chips_component.rb | 11 +- .../chips_component/chips_component.html.haml | 4 +- .../circle_progress_bar_component.rb | 14 + .../circle_progress_bar_component.html.haml | 7 + ...ircle_progress_bar_component_controller.js | 37 ++ app/components/concept_details_component.rb | 57 +- .../concept_details_component.html.haml | 43 +- app/components/date_time_field_component.rb | 15 + app/components/display/alert_component.rb | 47 ++ .../alert_component/alert_component.html.haml | 14 + .../alert_component_controller.js | 19 + .../display/button_loader_component.rb | 23 + app/components/display/header_component.rb | 23 + app/components/display/image_component.rb | 34 ++ .../display/info_tooltip_component.rb | 5 +- app/components/dropdown_button_component.rb | 12 + .../dropdown_button_component.html.haml | 8 + .../dropdown_container_component.rb | 11 + .../dropdown_container_component.html.haml | 12 + .../dropdown_section_button_component.rb | 16 + ...ropdown_section_button_component.html.haml | 7 + .../external_link_text_component.rb | 8 + app/components/field_container_component.rb | 15 + .../field_container_component.html.haml | 9 + .../file_input_loader_component.html.haml | 5 - app/components/form_group_component.rb | 47 -- .../form_group_component.html.haml | 23 - app/components/input/date_component.rb | 14 + app/components/input/email_component.rb | 11 + .../file_input_component.rb} | 2 +- .../file_input_component.html.haml | 5 + .../file_input_loader_component_controller.js | 0 app/components/input/input_field_component.rb | 33 ++ .../input_field_component.html.haml | 28 + .../input/language_selector_component.rb | 26 + app/components/input/password_component.rb | 11 + app/components/input/select_component.rb | 24 + .../select_component.html.haml | 2 + app/components/input/text_area_component.rb | 8 + .../text_area_component.html.haml | 3 + app/components/input/text_input_component.rb | 13 + app/components/input/url_component.rb | 11 + .../internal_link_text_component.rb | 7 + app/components/label_link_component.rb | 6 +- app/components/language_field_component.rb | 23 + .../language_field_component.html.haml | 8 + app/components/layout/card_component.rb | 13 + .../layout/horizontal_list_component.rb | 18 + app/components/layout/list_component.rb | 20 + .../layout/progress_pages_component.rb | 10 + .../progress_pages_component.html.haml | 32 + .../progress_pages_component_controller.js | 87 +++ app/components/layout/reveal_component.rb | 20 + .../reveal_component.html.haml | 5 + .../reveal_component_controller.js | 30 + app/components/license_field_component.rb | 10 + .../license_field_component.html.haml | 8 + app/components/link_field_component.rb | 16 + .../link_field_component.html.haml | 6 + app/components/link_text_component.rb | 16 + app/components/loader_component.rb | 19 +- app/components/metadata_selector_component.rb | 19 - .../metadata_selector_component.html.haml | 2 - .../metadata_selector_component_controller.js | 15 - .../nested_agent_search_input_component.rb | 16 + ...ted_agent_search_input_component.html.haml | 15 + .../nested_form_inputs_component.rb | 8 + .../nested_form_inputs_component.html.haml | 35 +- app/components/notification_component.rb | 39 ++ .../notification_component.html.haml | 13 + .../ontology_browse_card_component.rb | 1 + .../ontology_browse_card_component.html.haml | 131 ++--- .../ontology_search_input_component.rb | 10 + .../ontology_search_input_component.html.haml | 11 + .../ontology_subscribe_button_component.rb | 32 +- ...y_subscribe_button_component_controller.js | 20 +- app/components/pill_button_component.rb | 9 + .../pill_button_component.html.haml | 2 + app/components/popup_link_text_component.rb | 9 + app/components/rounded_button_component.rb | 21 + .../rounded_button_component.html.haml | 2 + app/components/search_input_component.rb | 32 + .../search_input_component.html.haml | 21 + .../search_input_component_controller.js | 164 ++++++ app/components/select_input_component.rb | 45 +- .../select_input_component.html.haml | 10 - .../select_input_component_controller.js | 141 +---- app/components/square_badge_component.rb | 19 + .../submission_metadata_component.rb | 52 ++ .../submission_metadata_component.html.haml | 18 + app/components/submission_status_component.rb | 29 + .../submission_status_component.html.haml | 8 + app/components/summary_section_component.rb | 17 + .../summary_section_component.html.haml | 19 + app/components/switch_input_component.rb | 5 +- .../switch_input_component.html.haml | 10 +- app/components/tab_item_component.rb | 55 ++ app/components/table_cell_component.rb | 18 + app/components/table_component.rb | 31 + .../table_component/table_component.html.haml | 7 + app/components/table_row_component.rb | 28 + .../table_row_component.html.haml | 4 + app/components/tabs_container_component.rb | 47 ++ .../tabs_container_component.html.haml | 17 + .../tabs_container_component_controller.js | 43 ++ app/components/text_area_field_component.rb | 12 + .../text_area_field_component.html.haml | 5 + app/components/text_field_component.rb | 9 - .../text_field_component.html.haml | 7 - .../tree_infinite_scroll_component.html.haml | 2 +- app/components/turbo_frame_component.rb | 3 + .../turbo_frame_component.html.haml | 4 +- app/components/turbo_modal_component.rb | 3 +- .../turbo_modal_component.html.haml | 4 +- .../turbo_modal_component_controller.js | 10 + app/controllers/application_controller.rb | 4 + app/controllers/notes_controller.rb | 2 +- app/controllers/ontologies_controller.rb | 8 +- app/helpers/application_helper.rb | 101 ++-- app/helpers/components_helper.rb | 80 +++ app/helpers/modal_helper.rb | 42 ++ app/helpers/submissions_helper.rb | 11 +- app/javascript/application_esbuild.js | 9 +- app/javascript/component_controllers/index.js | 22 +- app/javascript/controllers/application.js | 8 +- .../controllers/chosen_controller.js | 4 +- .../controllers/form_display_controller.js | 36 ++ .../controllers/history_controller.js | 10 +- app/javascript/controllers/index.js | 22 + .../controllers/language_change_controller.js | 18 + .../metadata_downloader_controller.js | 2 +- .../ontology_relations_network_controller.js | 169 ++++++ .../ontology_viewer_tabs_controller.js | 47 ++ .../platform_language_controller.js | 21 + .../controllers/show_modal_controller.js | 2 +- .../controllers/text_truncate_controller.js | 21 + .../controllers/tooltip_controller.js | 21 +- .../topnav_responsiveness_controller.js | 22 + .../controllers/turbo_frame_controller.js | 18 +- .../turbo_frame_error_controller.js | 9 +- app/javascript/mixins/cookie.js | 8 + app/javascript/mixins/useFairScore.js | 4 +- app/javascript/mixins/useHistory.js | 62 +- app/javascript/mixins/useTomSelect.js | 9 + app/javascript/mixins/useTooltip.js | 1 - app/views/admin/index.html.haml | 27 +- app/views/annotator/index.html.haml | 2 +- app/views/annotatorplus/index.html.haml | 2 +- app/views/collections/_collection.html.haml | 26 +- app/views/concepts/_details.html.haml | 1 + .../errors/internal_server_error.html.erb | 3 - .../errors/internal_server_error.html.haml | 15 + app/views/errors/not_found.html.erb | 5 - app/views/errors/not_found.html.haml | 12 + app/views/fair_score/_details.html.haml | 2 +- app/views/label_xl/show.html.haml | 21 +- app/views/layouts/_footer.html.haml | 53 +- app/views/layouts/_header.html.erb | 2 +- app/views/layouts/_notices.html.haml | 5 +- app/views/layouts/_ontology_viewer.html.haml | 2 +- app/views/layouts/_topnav.html.haml | 109 ++-- app/views/layouts/appliance.html.haml | 5 +- app/views/layouts/application.html.erb | 2 +- app/views/layouts/component_preview.html.erb | 59 ++ .../component_preview_not_centred.html.erb | 56 ++ app/views/layouts/ontology.html.erb | 2 +- .../layouts/ontology_viewer/_header.html.haml | 34 ++ app/views/login/index.html.haml | 3 +- app/views/mappings/_count.html.haml | 32 +- .../mappings/bulk_loader/_loader.html.haml | 4 +- app/views/mappings/edit.html.haml | 2 +- app/views/mappings/index.html.haml | 2 +- app/views/mappings/new.html.haml | 2 +- app/views/ncbo_annotatorplus/index.html.haml | 2 +- app/views/notes/_new_comment.html.haml | 2 +- app/views/notes/_new_proposal.html.haml | 2 +- app/views/notes/_note_line.html.haml | 25 +- app/views/notes/_notes.html.haml | 44 +- app/views/notes/show.html.haml | 2 +- .../_concepts_browser.html.haml | 7 +- .../ontologies/sections/visualize.html.haml | 2 +- .../_form_edit.html.haml | 2 +- app/views/schemes/_scheme.html.haml | 19 +- app/views/submissions/_form_content.html.haml | 18 +- app/views/users/_form.html.haml | 3 +- app/views/users/show.html.haml | 4 +- config/application.rb | 3 + config/environments/appliance.rb | 2 +- config/locales/en.yml | 545 +++++++++++++++--- config/routes.rb | 5 +- lib/tasks/generate_component_previews.rake | 34 ++ package.json | 4 +- .../alert_message_component_spec.rb | 15 - .../file_input_loader_component_spec.rb | 15 - .../buttons/chip_button_component_preview.rb | 19 + ...logy_subscribe_button_component_preview.rb | 7 + .../buttons/pill_button_component_preview.rb | 8 + .../regular_button_component_preview.rb | 57 ++ .../rounded_button_component_preview.rb | 14 + .../concept_details_component_preview.rb | 33 ++ .../display/alert_component_preview.rb | 34 ++ .../circle_progress_bar_component_preview.rb | 10 + .../date_time_field_component_preview.rb | 9 + .../field_container_component_preview.rb | 11 + .../display/header_component_preview.rb | 10 + .../display/image_component_preview.rb | 7 + .../display/info_tooltip_component_preview.rb | 9 + .../language_field_component_preview.rb | 8 + .../license_field_component_preview.rb | 8 + .../display/link_field_component_preview.rb | 8 + .../display/link_text_component_preview.rb | 25 + .../text_area_field_component_preview.rb | 13 + .../previews/input/chips_component_preview.rb | 10 + .../input/input_field_component_preview.rb | 94 +++ .../nested_form_input_component_preview.rb | 18 + .../input/select_component_preview.rb | 27 + .../input/switch_input_component_preview.rb | 9 + .../previews/layout/card_component_preview.rb | 10 + .../layout/card_message_component_preview.rb | 30 + .../dropdown_container_component_preview.rb | 15 + .../previews/layout/list_component_preview.rb | 19 + .../progress_pages_component_preview.rb | 11 + .../summary_section_component_preview.rb | 14 + .../layout/table_component_preview.rb | 45 ++ .../tabs_container_component_preview.rb | 78 +++ .../layout/turbo_modal_component_preview.rb | 16 + .../previews/loader_component_preview.rb | 12 + .../notification_component_preview.rb | 12 + yarn.lock | 25 + 402 files changed, 7826 insertions(+), 1452 deletions(-) create mode 100644 app/assets/images/arrow-down.svg create mode 100644 app/assets/images/arrow-right-outlined.svg create mode 100644 app/assets/images/arrow-right.svg create mode 100644 app/assets/images/check-outlined.svg create mode 100644 app/assets/images/danger.svg create mode 100644 app/assets/images/edit.svg create mode 100644 app/assets/images/errors/agroportal.svg create mode 100644 app/assets/images/eye.svg delete mode 100644 app/assets/images/flags32.png create mode 100644 app/assets/images/home-random-bubbles.svg create mode 100644 app/assets/images/icons/alert-triangle.svg create mode 100644 app/assets/images/icons/alert.svg create mode 100644 app/assets/images/icons/archive.svg create mode 100644 app/assets/images/icons/arrow-left.svg create mode 100644 app/assets/images/icons/calendar.svg create mode 100644 app/assets/images/icons/circle-down.svg create mode 100644 app/assets/images/icons/circle-left.svg create mode 100644 app/assets/images/icons/circle-right.svg create mode 100644 app/assets/images/icons/circle-up.svg create mode 100644 app/assets/images/icons/close.svg create mode 100644 app/assets/images/icons/delete.svg create mode 100644 app/assets/images/icons/error-icon.svg create mode 100644 app/assets/images/icons/error.svg create mode 100644 app/assets/images/icons/external-link.svg create mode 100644 app/assets/images/icons/github.svg create mode 100644 app/assets/images/icons/google.svg create mode 100644 app/assets/images/icons/info.svg create mode 100644 app/assets/images/icons/internal-link.svg create mode 100644 app/assets/images/icons/keycloak.svg create mode 100644 app/assets/images/icons/law.svg create mode 100644 app/assets/images/icons/list-tree.svg create mode 100644 app/assets/images/icons/list.svg create mode 100644 app/assets/images/icons/loop.svg create mode 100644 app/assets/images/icons/orcid.svg create mode 100644 app/assets/images/icons/plus.svg create mode 100644 app/assets/images/icons/popup-link.svg create mode 100644 app/assets/images/icons/publication.svg create mode 100644 app/assets/images/icons/success-icon.svg create mode 100644 app/assets/images/icons/success.svg create mode 100644 app/assets/images/icons/white-check.svg create mode 100644 app/assets/images/icons/zoom-center.svg create mode 100644 app/assets/images/icons/zoom-in.svg create mode 100644 app/assets/images/icons/zoom-out.svg create mode 100644 app/assets/images/info.svg create mode 100644 app/assets/images/json.svg create mode 100644 app/assets/images/layout/asc.png create mode 100644 app/assets/images/layout/desc.png delete mode 100644 app/assets/images/list-tree.svg create mode 100644 app/assets/images/logo-white.svg delete mode 100644 app/assets/images/logos/collaboration/cnrs_logo.jpg create mode 100644 app/assets/images/logos/collaboration/d2kab.png delete mode 100644 app/assets/images/logos/collaboration/d2kab_logo.png create mode 100644 app/assets/images/logos/collaboration/inrae.png delete mode 100644 app/assets/images/logos/collaboration/inrae_logo.jpg create mode 100644 app/assets/images/logos/collaboration/lirmm.png delete mode 100644 app/assets/images/logos/collaboration/lirmm_logo.png create mode 100644 app/assets/images/logos/collaboration/ontoportal.png delete mode 100644 app/assets/images/logos/collaboration/sifr_logo.jpg delete mode 100644 app/assets/images/logos/collaboration/stanford-university_logo.png create mode 100644 app/assets/images/logos/collaboration/stanford.png create mode 100644 app/assets/images/logos/ontoportal.svg delete mode 100644 app/assets/images/logos/supports/agropolisfondation_logo.png create mode 100644 app/assets/images/logos/supports/anr.png delete mode 100644 app/assets/images/logos/supports/anr_logo.png create mode 100644 app/assets/images/logos/supports/eu.png delete mode 100644 app/assets/images/logos/supports/ibc_logo.jpg delete mode 100644 app/assets/images/logos/supports/msca_eu_logo.jpg create mode 100644 app/assets/images/logos/supports/numev.png delete mode 100644 app/assets/images/logos/supports/numev_logo.png create mode 100644 app/assets/images/loop.svg create mode 100644 app/assets/images/ontoportal-icon.svg create mode 100644 app/assets/images/orange-warning.svg create mode 100644 app/assets/images/play-white.svg create mode 100644 app/assets/images/play.svg create mode 100644 app/assets/images/reload.svg create mode 100644 app/assets/images/social/api.svg create mode 100644 app/assets/images/social/email.svg create mode 100644 app/assets/images/social/github.svg create mode 100644 app/assets/images/social/people.svg create mode 100644 app/assets/images/social/sparql.svg create mode 100644 app/assets/images/social/twitter.svg create mode 100644 app/assets/images/success.svg create mode 100644 app/assets/images/summary/arrow-down.svg create mode 100644 app/assets/images/summary/documentation.svg create mode 100644 app/assets/images/summary/download.svg create mode 100644 app/assets/images/summary/homepage.svg create mode 100644 app/assets/images/summary/sparql.svg create mode 100644 app/assets/images/update.svg create mode 100644 app/assets/images/upload-file.svg create mode 100644 app/assets/images/upload.svg create mode 100644 app/assets/images/warning.svg create mode 100644 app/assets/images/white-check.svg create mode 100644 app/assets/images/x.svg delete mode 100644 app/assets/javascripts/tooltipster.bundle.min.js create mode 100644 app/assets/stylesheets/agents.scss mode change 100644 => 100755 app/assets/stylesheets/application.css.scss.erb create mode 100644 app/assets/stylesheets/components/alert.scss create mode 100644 app/assets/stylesheets/components/card.scss create mode 100644 app/assets/stylesheets/components/chip_button.scss create mode 100644 app/assets/stylesheets/components/circle_progress_bar.scss create mode 100644 app/assets/stylesheets/components/concept_details.scss create mode 100644 app/assets/stylesheets/components/dropdown.scss create mode 100644 app/assets/stylesheets/components/field_container.scss create mode 100644 app/assets/stylesheets/components/file_input_loader.scss create mode 100644 app/assets/stylesheets/components/header.scss create mode 100644 app/assets/stylesheets/components/image.scss create mode 100644 app/assets/stylesheets/components/input_field.scss create mode 100644 app/assets/stylesheets/components/modal.scss create mode 100644 app/assets/stylesheets/components/nested_form.scss create mode 100644 app/assets/stylesheets/components/notification.scss create mode 100644 app/assets/stylesheets/components/outline_tabs_container.scss create mode 100644 app/assets/stylesheets/components/pill_button.scss create mode 100644 app/assets/stylesheets/components/pill_tabs_container.scss create mode 100644 app/assets/stylesheets/components/primary_button.scss create mode 100644 app/assets/stylesheets/components/progress_pages.scss create mode 100644 app/assets/stylesheets/components/regular_button.scss create mode 100644 app/assets/stylesheets/components/rounded_button.scss create mode 100644 app/assets/stylesheets/components/search_input.scss create mode 100644 app/assets/stylesheets/components/summary_section.scss create mode 100644 app/assets/stylesheets/components/switch.scss create mode 100644 app/assets/stylesheets/components/table.scss create mode 100644 app/assets/stylesheets/components/tabs_container.scss create mode 100644 app/assets/stylesheets/components/text_area_field.scss create mode 100644 app/assets/stylesheets/edit-ontology.scss delete mode 100644 app/assets/stylesheets/file_uploader.scss create mode 100644 app/assets/stylesheets/nav_bar.scss create mode 100644 app/assets/stylesheets/ontology_details_header.scss create mode 100644 app/assets/stylesheets/ontology_viewer.scss create mode 100644 app/assets/stylesheets/summary.scss.erb delete mode 100644 app/assets/stylesheets/themes/lirmm/flags32.scss delete mode 100644 app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-borderless.min.scss delete mode 100644 app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-light.min.scss delete mode 100644 app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-noir.min.scss delete mode 100644 app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-punk.min.scss delete mode 100644 app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-shadow.min.scss delete mode 100644 app/assets/stylesheets/themes/lirmm/tooltipster.bundle.min.scss create mode 100644 app/assets/stylesheets/upload_ontology.scss create mode 100644 app/components/agent_search_input_component.rb create mode 100644 app/components/agent_search_input_component/agent_search_input_component.html.haml delete mode 100644 app/components/alert_message_component.rb delete mode 100644 app/components/alert_message_component/alert_message_component.html.haml create mode 100644 app/components/buttons/primary_button_component/primary_button_component.html.haml create mode 100644 app/components/buttons/regular_button_component.rb create mode 100644 app/components/buttons/regular_button_component/regular_button_component.html.haml create mode 100644 app/components/chip_button_component.rb create mode 100644 app/components/chip_button_component/chip_button_component.html.haml create mode 100644 app/components/circle_progress_bar_component.rb create mode 100644 app/components/circle_progress_bar_component/circle_progress_bar_component.html.haml create mode 100644 app/components/circle_progress_bar_component/circle_progress_bar_component_controller.js create mode 100644 app/components/date_time_field_component.rb create mode 100644 app/components/display/alert_component.rb create mode 100644 app/components/display/alert_component/alert_component.html.haml create mode 100644 app/components/display/alert_component/alert_component_controller.js create mode 100644 app/components/display/button_loader_component.rb create mode 100644 app/components/display/header_component.rb create mode 100644 app/components/display/image_component.rb create mode 100644 app/components/dropdown_button_component.rb create mode 100644 app/components/dropdown_button_component/dropdown_button_component.html.haml create mode 100644 app/components/dropdown_container_component.rb create mode 100644 app/components/dropdown_container_component/dropdown_container_component.html.haml create mode 100644 app/components/dropdown_section_button_component.rb create mode 100644 app/components/dropdown_section_button_component/dropdown_section_button_component.html.haml create mode 100644 app/components/external_link_text_component.rb create mode 100644 app/components/field_container_component.rb create mode 100644 app/components/field_container_component/field_container_component.html.haml delete mode 100644 app/components/file_input_loader_component/file_input_loader_component.html.haml delete mode 100644 app/components/form_group_component.rb delete mode 100644 app/components/form_group_component/form_group_component.html.haml create mode 100644 app/components/input/date_component.rb create mode 100644 app/components/input/email_component.rb rename app/components/{file_input_loader_component.rb => input/file_input_component.rb} (71%) create mode 100644 app/components/input/file_input_component/file_input_component.html.haml rename app/components/{file_input_loader_component => input/file_input_component}/file_input_loader_component_controller.js (100%) create mode 100644 app/components/input/input_field_component.rb create mode 100644 app/components/input/input_field_component/input_field_component.html.haml create mode 100644 app/components/input/language_selector_component.rb create mode 100644 app/components/input/password_component.rb create mode 100644 app/components/input/select_component.rb create mode 100644 app/components/input/select_component/select_component.html.haml create mode 100644 app/components/input/text_area_component.rb create mode 100644 app/components/input/text_area_component/text_area_component.html.haml create mode 100644 app/components/input/text_input_component.rb create mode 100644 app/components/input/url_component.rb create mode 100644 app/components/internal_link_text_component.rb create mode 100644 app/components/language_field_component.rb create mode 100644 app/components/language_field_component/language_field_component.html.haml create mode 100644 app/components/layout/card_component.rb create mode 100644 app/components/layout/horizontal_list_component.rb create mode 100644 app/components/layout/list_component.rb create mode 100644 app/components/layout/progress_pages_component.rb create mode 100644 app/components/layout/progress_pages_component/progress_pages_component.html.haml create mode 100644 app/components/layout/progress_pages_component/progress_pages_component_controller.js create mode 100644 app/components/layout/reveal_component.rb create mode 100644 app/components/layout/reveal_component/reveal_component.html.haml create mode 100644 app/components/layout/reveal_component/reveal_component_controller.js create mode 100644 app/components/license_field_component.rb create mode 100644 app/components/license_field_component/license_field_component.html.haml create mode 100644 app/components/link_field_component.rb create mode 100644 app/components/link_field_component/link_field_component.html.haml create mode 100644 app/components/link_text_component.rb delete mode 100644 app/components/metadata_selector_component.rb delete mode 100644 app/components/metadata_selector_component/metadata_selector_component.html.haml delete mode 100644 app/components/metadata_selector_component/metadata_selector_component_controller.js create mode 100644 app/components/nested_agent_search_input_component.rb create mode 100644 app/components/nested_agent_search_input_component/nested_agent_search_input_component.html.haml create mode 100644 app/components/notification_component.rb create mode 100644 app/components/notification_component/notification_component.html.haml create mode 100644 app/components/ontology_search_input_component.rb create mode 100644 app/components/ontology_search_input_component/ontology_search_input_component.html.haml create mode 100644 app/components/pill_button_component.rb create mode 100644 app/components/pill_button_component/pill_button_component.html.haml create mode 100644 app/components/popup_link_text_component.rb create mode 100644 app/components/rounded_button_component.rb create mode 100644 app/components/rounded_button_component/rounded_button_component.html.haml create mode 100644 app/components/search_input_component.rb create mode 100644 app/components/search_input_component/search_input_component.html.haml create mode 100644 app/components/search_input_component/search_input_component_controller.js delete mode 100644 app/components/select_input_component/select_input_component.html.haml create mode 100644 app/components/square_badge_component.rb create mode 100644 app/components/submission_metadata_component.rb create mode 100644 app/components/submission_metadata_component/submission_metadata_component.html.haml create mode 100644 app/components/submission_status_component.rb create mode 100644 app/components/submission_status_component/submission_status_component.html.haml create mode 100644 app/components/summary_section_component.rb create mode 100644 app/components/summary_section_component/summary_section_component.html.haml create mode 100644 app/components/tab_item_component.rb create mode 100644 app/components/table_cell_component.rb create mode 100644 app/components/table_component.rb create mode 100644 app/components/table_component/table_component.html.haml create mode 100644 app/components/table_row_component.rb create mode 100644 app/components/table_row_component/table_row_component.html.haml create mode 100644 app/components/tabs_container_component.rb create mode 100644 app/components/tabs_container_component/tabs_container_component.html.haml create mode 100644 app/components/tabs_container_component/tabs_container_component_controller.js create mode 100644 app/components/text_area_field_component.rb create mode 100644 app/components/text_area_field_component/text_area_field_component.html.haml delete mode 100644 app/components/text_field_component.rb delete mode 100644 app/components/text_field_component/text_field_component.html.haml create mode 100644 app/helpers/components_helper.rb create mode 100644 app/helpers/modal_helper.rb create mode 100644 app/javascript/controllers/form_display_controller.js create mode 100644 app/javascript/controllers/language_change_controller.js create mode 100644 app/javascript/controllers/ontology_relations_network_controller.js create mode 100644 app/javascript/controllers/ontology_viewer_tabs_controller.js create mode 100644 app/javascript/controllers/platform_language_controller.js create mode 100644 app/javascript/controllers/text_truncate_controller.js create mode 100644 app/javascript/controllers/topnav_responsiveness_controller.js create mode 100644 app/javascript/mixins/cookie.js create mode 100644 app/javascript/mixins/useTomSelect.js delete mode 100644 app/views/errors/internal_server_error.html.erb create mode 100644 app/views/errors/internal_server_error.html.haml delete mode 100644 app/views/errors/not_found.html.erb create mode 100644 app/views/errors/not_found.html.haml create mode 100644 app/views/layouts/component_preview.html.erb create mode 100644 app/views/layouts/component_preview_not_centred.html.erb create mode 100644 app/views/layouts/ontology_viewer/_header.html.haml create mode 100644 lib/tasks/generate_component_previews.rake delete mode 100644 spec/components/alert_message_component_spec.rb delete mode 100644 spec/components/file_input_loader_component_spec.rb create mode 100644 test/components/previews/buttons/chip_button_component_preview.rb create mode 100644 test/components/previews/buttons/ontology_subscribe_button_component_preview.rb create mode 100644 test/components/previews/buttons/pill_button_component_preview.rb create mode 100644 test/components/previews/buttons/regular_button_component_preview.rb create mode 100644 test/components/previews/buttons/rounded_button_component_preview.rb create mode 100644 test/components/previews/concept_details_component_preview.rb create mode 100644 test/components/previews/display/alert_component_preview.rb create mode 100644 test/components/previews/display/circle_progress_bar_component_preview.rb create mode 100644 test/components/previews/display/date_time_field_component_preview.rb create mode 100644 test/components/previews/display/field_container_component_preview.rb create mode 100644 test/components/previews/display/header_component_preview.rb create mode 100644 test/components/previews/display/image_component_preview.rb create mode 100644 test/components/previews/display/info_tooltip_component_preview.rb create mode 100644 test/components/previews/display/language_field_component_preview.rb create mode 100644 test/components/previews/display/license_field_component_preview.rb create mode 100644 test/components/previews/display/link_field_component_preview.rb create mode 100644 test/components/previews/display/link_text_component_preview.rb create mode 100644 test/components/previews/display/text_area_field_component_preview.rb create mode 100644 test/components/previews/input/chips_component_preview.rb create mode 100644 test/components/previews/input/input_field_component_preview.rb create mode 100644 test/components/previews/input/nested_form_input_component_preview.rb create mode 100644 test/components/previews/input/select_component_preview.rb create mode 100644 test/components/previews/input/switch_input_component_preview.rb create mode 100644 test/components/previews/layout/card_component_preview.rb create mode 100644 test/components/previews/layout/card_message_component_preview.rb create mode 100644 test/components/previews/layout/dropdown_container_component_preview.rb create mode 100644 test/components/previews/layout/list_component_preview.rb create mode 100644 test/components/previews/layout/progress_pages_component_preview.rb create mode 100644 test/components/previews/layout/summary_section_component_preview.rb create mode 100644 test/components/previews/layout/table_component_preview.rb create mode 100644 test/components/previews/layout/tabs_container_component_preview.rb create mode 100644 test/components/previews/layout/turbo_modal_component_preview.rb create mode 100644 test/components/previews/loader_component_preview.rb create mode 100644 test/components/previews/notification_component_preview.rb diff --git a/Gemfile b/Gemfile index 7de2ef3ea7..6760c3e100 100644 --- a/Gemfile +++ b/Gemfile @@ -84,7 +84,7 @@ group :staging, :production, :appliance do end group :development do - # Capistrano Deployment + # Capistrano Deployment gem 'bcrypt_pbkdf', '>= 1.0', '< 2.0', require: false # https://github.com/miloserdow/capistrano-deploy/issues/42 gem 'capistrano', '~> 3.11', require: false gem 'capistrano-bundler', require: false @@ -104,6 +104,7 @@ group :development do # Use console on exceptions pages [https://github.com/rails/web-console] gem 'web-console' + gem "lookbook", '~> 1.5.5' end group :test, :development do diff --git a/Gemfile.lock b/Gemfile.lock index 8665835772..637f306188 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -426,6 +426,8 @@ GEM zeitwerk (2.6.12) PLATFORMS + ruby + x86_64-darwin-21 x86_64-linux DEPENDENCIES diff --git a/app/assets/images/arrow-down.svg b/app/assets/images/arrow-down.svg new file mode 100644 index 0000000000..2757508f60 --- /dev/null +++ b/app/assets/images/arrow-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/arrow-right-outlined.svg b/app/assets/images/arrow-right-outlined.svg new file mode 100644 index 0000000000..5161a4b171 --- /dev/null +++ b/app/assets/images/arrow-right-outlined.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/arrow-right.svg b/app/assets/images/arrow-right.svg new file mode 100644 index 0000000000..07eb88ef14 --- /dev/null +++ b/app/assets/images/arrow-right.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/check-outlined.svg b/app/assets/images/check-outlined.svg new file mode 100644 index 0000000000..db2866523b --- /dev/null +++ b/app/assets/images/check-outlined.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/assets/images/danger.svg b/app/assets/images/danger.svg new file mode 100644 index 0000000000..27f5cef638 --- /dev/null +++ b/app/assets/images/danger.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/edit.svg b/app/assets/images/edit.svg new file mode 100644 index 0000000000..5d042ab843 --- /dev/null +++ b/app/assets/images/edit.svg @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/app/assets/images/errors/agroportal.svg b/app/assets/images/errors/agroportal.svg new file mode 100644 index 0000000000..f56db244a8 --- /dev/null +++ b/app/assets/images/errors/agroportal.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/assets/images/eye.svg b/app/assets/images/eye.svg new file mode 100644 index 0000000000..28889ecc32 --- /dev/null +++ b/app/assets/images/eye.svg @@ -0,0 +1,4 @@ + + + + diff --git a/app/assets/images/flags32.png b/app/assets/images/flags32.png deleted file mode 100644 index a9a45aef81d475e7053ee8ccf3750d05e48e923c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89104 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 Dn&x!a diff --git a/app/assets/images/home-random-bubbles.svg b/app/assets/images/home-random-bubbles.svg new file mode 100644 index 0000000000..52eee7a98b --- /dev/null +++ b/app/assets/images/home-random-bubbles.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/assets/images/icons/alert-triangle.svg b/app/assets/images/icons/alert-triangle.svg new file mode 100644 index 0000000000..749144edb6 --- /dev/null +++ b/app/assets/images/icons/alert-triangle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/images/icons/alert.svg b/app/assets/images/icons/alert.svg new file mode 100644 index 0000000000..f944382c56 --- /dev/null +++ b/app/assets/images/icons/alert.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/assets/images/icons/archive.svg b/app/assets/images/icons/archive.svg new file mode 100644 index 0000000000..033afbc82d --- /dev/null +++ b/app/assets/images/icons/archive.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/images/icons/arrow-left.svg b/app/assets/images/icons/arrow-left.svg new file mode 100644 index 0000000000..b3c63be0de --- /dev/null +++ b/app/assets/images/icons/arrow-left.svg @@ -0,0 +1,4 @@ + + + diff --git a/app/assets/images/icons/calendar.svg b/app/assets/images/icons/calendar.svg new file mode 100644 index 0000000000..7ad6a2f7ac --- /dev/null +++ b/app/assets/images/icons/calendar.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/icons/circle-down.svg b/app/assets/images/icons/circle-down.svg new file mode 100644 index 0000000000..a230b0565e --- /dev/null +++ b/app/assets/images/icons/circle-down.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/app/assets/images/icons/circle-left.svg b/app/assets/images/icons/circle-left.svg new file mode 100644 index 0000000000..45a2739be9 --- /dev/null +++ b/app/assets/images/icons/circle-left.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/app/assets/images/icons/circle-right.svg b/app/assets/images/icons/circle-right.svg new file mode 100644 index 0000000000..f77ce5fb85 --- /dev/null +++ b/app/assets/images/icons/circle-right.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/app/assets/images/icons/circle-up.svg b/app/assets/images/icons/circle-up.svg new file mode 100644 index 0000000000..30d0846814 --- /dev/null +++ b/app/assets/images/icons/circle-up.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/app/assets/images/icons/close.svg b/app/assets/images/icons/close.svg new file mode 100644 index 0000000000..d3f23c98ca --- /dev/null +++ b/app/assets/images/icons/close.svg @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/assets/images/icons/delete.svg b/app/assets/images/icons/delete.svg new file mode 100644 index 0000000000..0c3ed52040 --- /dev/null +++ b/app/assets/images/icons/delete.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/icons/error-icon.svg b/app/assets/images/icons/error-icon.svg new file mode 100644 index 0000000000..aef242ec34 --- /dev/null +++ b/app/assets/images/icons/error-icon.svg @@ -0,0 +1 @@ + error \ No newline at end of file diff --git a/app/assets/images/icons/error.svg b/app/assets/images/icons/error.svg new file mode 100644 index 0000000000..faf99a789b --- /dev/null +++ b/app/assets/images/icons/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/images/icons/external-link.svg b/app/assets/images/icons/external-link.svg new file mode 100644 index 0000000000..4d615c4cd9 --- /dev/null +++ b/app/assets/images/icons/external-link.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/icons/github.svg b/app/assets/images/icons/github.svg new file mode 100644 index 0000000000..06f3dcd7d5 --- /dev/null +++ b/app/assets/images/icons/github.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/icons/google.svg b/app/assets/images/icons/google.svg new file mode 100644 index 0000000000..f710f40208 --- /dev/null +++ b/app/assets/images/icons/google.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/icons/info.svg b/app/assets/images/icons/info.svg new file mode 100644 index 0000000000..4232099d00 --- /dev/null +++ b/app/assets/images/icons/info.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/assets/images/icons/internal-link.svg b/app/assets/images/icons/internal-link.svg new file mode 100644 index 0000000000..9e0a7bd5c3 --- /dev/null +++ b/app/assets/images/icons/internal-link.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/icons/keycloak.svg b/app/assets/images/icons/keycloak.svg new file mode 100644 index 0000000000..8b3cfb86c1 --- /dev/null +++ b/app/assets/images/icons/keycloak.svg @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/assets/images/icons/law.svg b/app/assets/images/icons/law.svg new file mode 100644 index 0000000000..0101a7fb12 --- /dev/null +++ b/app/assets/images/icons/law.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/app/assets/images/icons/list-tree.svg b/app/assets/images/icons/list-tree.svg new file mode 100644 index 0000000000..eac310be4a --- /dev/null +++ b/app/assets/images/icons/list-tree.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/icons/list.svg b/app/assets/images/icons/list.svg new file mode 100644 index 0000000000..4c1b3ded20 --- /dev/null +++ b/app/assets/images/icons/list.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/app/assets/images/icons/loop.svg b/app/assets/images/icons/loop.svg new file mode 100644 index 0000000000..38a8ac6948 --- /dev/null +++ b/app/assets/images/icons/loop.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/app/assets/images/icons/orcid.svg b/app/assets/images/icons/orcid.svg new file mode 100644 index 0000000000..86a1ea871c --- /dev/null +++ b/app/assets/images/icons/orcid.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/icons/plus.svg b/app/assets/images/icons/plus.svg new file mode 100644 index 0000000000..809f6ed5a7 --- /dev/null +++ b/app/assets/images/icons/plus.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/icons/popup-link.svg b/app/assets/images/icons/popup-link.svg new file mode 100644 index 0000000000..d094245c53 --- /dev/null +++ b/app/assets/images/icons/popup-link.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/icons/publication.svg b/app/assets/images/icons/publication.svg new file mode 100644 index 0000000000..6f333be5f0 --- /dev/null +++ b/app/assets/images/icons/publication.svg @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file diff --git a/app/assets/images/icons/success-icon.svg b/app/assets/images/icons/success-icon.svg new file mode 100644 index 0000000000..caab636fa7 --- /dev/null +++ b/app/assets/images/icons/success-icon.svg @@ -0,0 +1 @@ + success \ No newline at end of file diff --git a/app/assets/images/icons/success.svg b/app/assets/images/icons/success.svg new file mode 100644 index 0000000000..8a7c34c13a --- /dev/null +++ b/app/assets/images/icons/success.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/icons/white-check.svg b/app/assets/images/icons/white-check.svg new file mode 100644 index 0000000000..9ef8028d3f --- /dev/null +++ b/app/assets/images/icons/white-check.svg @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/app/assets/images/icons/zoom-center.svg b/app/assets/images/icons/zoom-center.svg new file mode 100644 index 0000000000..8cdd839392 --- /dev/null +++ b/app/assets/images/icons/zoom-center.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/app/assets/images/icons/zoom-in.svg b/app/assets/images/icons/zoom-in.svg new file mode 100644 index 0000000000..9d91d05414 --- /dev/null +++ b/app/assets/images/icons/zoom-in.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/app/assets/images/icons/zoom-out.svg b/app/assets/images/icons/zoom-out.svg new file mode 100644 index 0000000000..58f33bebb1 --- /dev/null +++ b/app/assets/images/icons/zoom-out.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/app/assets/images/info.svg b/app/assets/images/info.svg new file mode 100644 index 0000000000..8b9e031f64 --- /dev/null +++ b/app/assets/images/info.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/json.svg b/app/assets/images/json.svg new file mode 100644 index 0000000000..e7f7e88985 --- /dev/null +++ b/app/assets/images/json.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/layout/asc.png b/app/assets/images/layout/asc.png new file mode 100644 index 0000000000000000000000000000000000000000..60a454be159546692aaaee96e96df826a500f48e GIT binary patch literal 2912 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 KMNUMnLSTZ|b!tWc literal 0 HcmV?d00001 diff --git a/app/assets/images/layout/desc.png b/app/assets/images/layout/desc.png new file mode 100644 index 0000000000000000000000000000000000000000..ebfd397e2473ada26e7c20243b8a818823b496da GIT binary patch literal 2915 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 N002ovPDHLkV1kFjZPx$* literal 0 HcmV?d00001 diff --git a/app/assets/images/list-tree.svg b/app/assets/images/list-tree.svg deleted file mode 100644 index 4180dac32a..0000000000 --- a/app/assets/images/list-tree.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/assets/images/logo-white.svg b/app/assets/images/logo-white.svg new file mode 100644 index 0000000000..f920cd7def --- /dev/null +++ b/app/assets/images/logo-white.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/logos/collaboration/cnrs_logo.jpg b/app/assets/images/logos/collaboration/cnrs_logo.jpg deleted file mode 100644 index a3aeb1d7452c231c402a3be58a87ac921e232c7f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185446 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%0Dt%?N7h*>lgT7cUbXm-}}v^S*bh zsrPKVEu%sY?ap&Azuj~EjInp7-<|Pk*8SB5wc`bE=Bmv6hvXTYKOR1@Z<~Esk?xj` zH`VpMQ}-+LD6K!0O-MoxcaGEn3ubs5aPWMwUksYUGkEUB3~tVujt~wKIQ888;&2&h5D^tAnSfRtft&Df{sCGIsncQ?NVU_}Z*6 zae{83F+$iPoqbJtZhlKt>hy5SPp?yjO;6_g2j=#TztVG`Z{vyG>9O3qipkAx=KcE* z{j|-Sz1yqg%q6y@NY0k;4H_SPsrwviYy#^&ceHL#<0XSd;?qfSn%+;{p3Ir^tvux9 zs14pW4(5WPvllOvesvk(vh;~=qE*SP!d2}Hza0IYw|nD8=RbBAy{&GnXu*b*1zf;f zM^Vy6?epp#%>ezN%r=Wk*L%VI&YUYWTvuM3Ys6@*7${w3U@Pd~Aq>iRtcj^b ziC`cF*#h)S(7s8am6kzr&_=&_2v@d+E$Etz4r)(s0kPiHm2d~bTWi~Xj7gVrFdHP$ zMgHWq8zS=OJJjVIg^?gHG1MNR)La$b2kM_hQ|w`%lxo%&A}vL)3MSmlYt3#k6`JB= zVWS53)$)9;IW@Xzz5Gy$4F+y-Y9@{NCpTj?qdNyr?_|Au5WRNUrGS{UGM9dCvlcH}vnJy6XP7~> z;agg)``q@_r^)2c0a%4*aL6ggQlIcm+I_oq5qDFTGg@-$q2fkyyo5h#Ms&{j_ZY+{ zpcf~&;!;s6)x&$h+VK-LcwSHa)mckJFCVV7S-bAza?9~Mn7!w1d~&2_SS93+KS5}G{%bnogTr8EAN%C#RAYpS-qo0cr^NEgo52_ zlynp#2?A0HE;W0ff&4AV-e6fnAq1ARRexE@#lYJz=ww2pVtm2M^iTjp!bxbQMwr)z z4s!zs13rp71?CFyc@an~fTnc3L(q;~NYio&5F17@&BXAd)R=@0d@}X?=Xx_py4E9s zN+ul$1)j~t=m1t34*`;ve-rES!Z0TfJWCJcg>R0)YpxwJrKfL`HoB~{nR1f$!Yo9< z$AB3HwVIA*=GP)C0e(V28H|0h4PVixBQb$7+=$h36orC-I3ewgYpWS0P28t?Nt+N5 zY7WV{nMoCKVpiOMSC-50VnQ37G*ykk*GjDmH)~b%Z(&|AWtzp;3TQ3_5Nq+)G;pVI z79OV|kXnd;V~3W*DX@zPL$MODcRx`Ezh%y6z+f51Znu;cMh`x8l>s`_=~bH(MuvI> zh8a0e?=-+s4*~pHm|qfI0g8u`;@#9G{8;>q4zd6)>iRhVzwNCYZjuhq{7{sxbWncs z%`U{mq>Kz30rvv&gC`t*9Z#Ep?#6=;`<)2`1Of}pjLUI@KExax=6k@Czng61^R@r2 zs#;0@#(Gu~6_YG`$UGJ`F3WA;=0kHPyL!jAcwZ{FZ&P#6Ml!o)EA z8G;Qxq+#xgC>cy3#^W)_JvjldwG<)CgJ2n8VRU4n_$#R%tz9DuyOFYJJQ=C;r=h9A z1%eP3+r`JB;IqeGPV?L3r7M@pb3cBqmt9J^oN&)QpHzZ+78PdV;;k`Dx6~vkyXUEL=>@zR7;i z9jM!FEOhBpEgkk$DBB^Mzc)kOeeWLTYUPC~<&L778(pYY)Oy35>Kv94%1p)P;h7xn=KAr$7a|qOoAQYzkwTM)ZEz($& z=VVir?&5CkOt9O~bc~2x)jBXQOn81vx;1oE>2Q5_D?^y(0CZZjGk0~lSI4wBz3Mtquy$>0G_)4-bQRo&%^~MvkdpjiH2|0cIW%WkYVg8rG zcE$JNQZtxF33Fna$vWw3h9`{P*Bhni00Il)V*{M}BNc`h)tIyk@ASf7!dX>kBCJ7! zDHv^X5~qieKpBhQHcG1Zr;k90qz+`1P6%NgS{=TYjee4>$7?JI^)g~S-sT;TX+HZf zfz8a?50$A~ThJ6Z<6+gf11#gkDfqWc_)bvym#4jGn@&L^ zL+q2=U>hFlrAEwDQJ6XZrl}W&ikD%M`EcB}`XUWf}h*ges`UyCE zk)M{n(Gbc4?eOAs^{td}eR=cBK4Z4gL zhJggu56n!4&@-41>sveakNa*?)65a5cXm10zjwGnX8Rf|Q^(z8f^`UnH%Z5!{9+d@ z2G0{__=w(B1_fVsvORGFC!>b60>Ucdi9_L*vSA7?CTq%37#64lrW^<}MvjI}SnyVj z51N5SA*U8|;_8{=Fc}}rE)tSP=@;yIhc@-0zMKK4;tPmmj~);Q5FJoG=ufPouqHWt z73HEzzb@WV9NyYD>;|vRm$eOt)YIdm;f(>u|e0rZogIsS!a>+eF4qjiA0}w0l*X zwFY$e!ZQO|9cu`g=&oE}35JpRIva|#!GM)0I%WFvm{*yQqis=ZX3VPMaDJzuq9YC#P*L{Gt_gq6s8!1_uIfhrb?+5FxpJJdKx@HPzS>SH#|p`TM&{EIlmQV z*NV`qp`bd@d?ZDYAQ&ppa*nSf&tC4$~@QbTrV7e8u;B&5xG+ zan`F=5)^u+8+Ic3e*Tt@4SOnX>~I?#dFS$u`zbf`))e&d9P2V5e%pmPz3*-sZfLda zx1iAVpwpT=k=>TQJl=n`<1Jl4>dsugeCh66ubUWAvpPyFxAvUaw_b8pI;(b?_bCUm zqC9VLn)zJS(7dg;cVB;-ytv8hz@zz*FPRbwS8+W}0wbIgV9sT?vKf9ZNCD$2mFndl{x?Xj3j9 zX6jlQU!j!N08&M=)!-CNOoZ~I9Bn`fI1|o$P&YnT&;O45qGk+M`dIiO1`*!CBn z%pdBzP0ck*=33XJ`A<7FBO3RUjc?Z`mbeXgv-3{!nO(h8SDtBGW^!SIi|ydezkM`0 z(|=8I>igNx!eE*fZ?7J=gvs~xCOPOl1#A01((KbKT!$oe68&^ym zbYWh9&kY;G4UP*Z_BC5ncQDfRk>(Kc|9iaGSX`c0Ko>+2uZity+a`o{Q~A43L%q}9JT<5a5!gNW zQ4)O+lX9jwmVJXf6hbD*skKtjD@cVrK%28cp-mfr7=Zpi{uc)QsIZ<8V89}BGSZZ7 zlDz@;JKOP=nDd_R=7;DmhHj}^@yD4PO9juk(?YXeEz6(rFflUb(8NZ!pZZO_H1^ta z%fk)t)<4okPjGCyG7vuK!9(WHvf9LBRLthn#C!4glG0w(I2qY0d=}l<4Z<`-FR($w zyC#l2!{$J00DbV_5VC+1s$=LiD0t1`hqK65{U&fTPz$P4pGEaGGpcj!mhL=6k zY7r!)O1d1MO<_s_MHh)Xph!H@>=k}#%}LMQ?K4L-9XWaPLO`t8<&f9pl#i*V?Jf{| z_)X2g+gGQ8-LV21=*4+cDJLP;u?b{zVDjT^QC08%st3akn$4X71J-^wnd<&EqVrNI zHfe%Yl*{I^OZMR-tnTv`_)Yp_%+0HnKPTOOb#zIc)OT4*s~wORs7D98$&YW1-uKs` zpTCfC3mBM1*+qI)d+5}bRgDEUX%4jZSk~v=PLCWyfz$?8xn5`JCqlQ+d!jbTUVED(p~lXS;? z3zTP)X_Pwy$dFhQod!3%|L~^ zYNpB-q*3p4r0sq0Oo0H+AN1}U&u9#OR;U$sGKyinRI=?aDh2+E0t-K|i%MtOwDjeS;2?@lOJ{G2R{muDOq!s4R9sG zZP4top|*lH&BgvO-=4o2afLnq&J|`T$axf@U?gaKFRG-qz-4$TA`#I9d`K@uG7W>X z68=f8i-H~H5V1^R@jBx=p}+L{QwG@-GF?c$#;{gZU;n=sd@+$8XSN#KL_)op3X0yq z_=NBjT_Bz#qb8xNDmyJjw7*kNC=FZzBriRPqmX#=|;2gCjge878giCC>B6u4c6Gtx8EOsEWEt)fXRs=UtRBgx-mDd@aB}7{26b0NAJ^%TJ5`Wo&Un8 z5xX0kgC%KtaYlOG@W)BQHx<(8L!1f5b^E?19PnGWs-VuW^7!h!J$?ag#}xMymc^ZI z%`;2;^W@;Qzts=+-|N3~^qI!)PWHdAQwPJqzJ+E00fFf3;~4JSDk)27J!dc*(CXO$ z3TWJ>P-!ybsuWQ0fyoPPz};JiY|3jY-AK)4tntO~kqWpVLm@*+pvkr=#0?OD++^CsYlO`Q_l>$*T*BG^NH88%MJH; zY`C(3#8@gkN!K~LTz68w>-^GJ*{A0*nb(6EYo6h}Cvk?l$Zuj96uKW@s--k5H4 zvi!lUpvgY&Nt15s4CBNi;t!!oJGz|U5Qz1J0m^Zc!>)}y7pPw88H5jZ9VK~33|UB>EzaHO#l7M9NKsFd*1)KJbu{X zU3G`0wQCm`mfD5`!;MG)lQ_yCby0vh1&m#wMGjTanyp0%{b0HRsJy91bDxw*ku*j} z2fMS_qNCG0!qnn0uxjRL?RrFNM!$1=vLWABhh z)mglUS$lGB_Zh$&JY~f`Wn%DzXAh1J?QlL5?>X^Z!JQJ5iSCm${h1{`JFbH8<_UEA z3qj*~H=mlrXj;8(rAMV-QK0~R%4+yL#e1p2s_-kmncC^s2P~dYZzBlZ`t@{LkJwFb zdL=b}iR^wMc6_nvsE|~ffYdSS3!JPiGT)@ehx~Guk^EU#f}eJ`x%-4n#NU^J8EF=P zecQ}b!HDnSupbo9dw`3DBT$ADNd5}^A`a$2io-npDac~^HDp)5>etm8lC8s#Kmo2Q z=o;ztjKfwLJsL#ll~-C0aZH8PV%13el#PxCnHCBhD82z-6Uw9+%>iO4Yp9googkY$ z_z9ZD6++V)5yn*&0`RaF+#b$^C@lnh!eCiDW)4cJY@>!^N}L|#n8R;!63RNLTzFHD z#a$y{vOi!j0;aGC7hO97PFF-vvD35Bq85=M22#?lMJ?SxACW+|!_MlpX069g73u!J^weBIP-!*`qS;l!#4L1A#ggr~* z__|XaJIcOEUo{GVVzttdyn#13YHg2A#VVf)bn((Q*(d)Fl#)Ol5A`2c`jI|p4%!J? zNx`@9Y3>dyE;}Fvd1$^`Ngb6_+&GF#5kd0Wson{6EDEmyM&p001@mkOxU}pd;Glv& zp8`qm3emTK)8nAv3b|)rhb^ICFkgNB9E#V8FUrUe!^AEc^PK-kV}|(@+n)Yyx5(i3 ze{9hH|C0}AKZj~=Sf{BTigq-US*f;wp)Py@ZPN~6SQ`rr3!4rP0fAOxs3$xkGkeoI`C5xer6w!IKod-{IBp)Q24$Y+o zUoM}9rBkqYIl_lFo6+GdY8X*6E|OhP(TFx&L*xxXRs~-NXvtjo*C$1a0ecvH@xVIY zmPgf+sI4u_7yi6m{l@F@z;%|R8iSV?rd^qvR6j25-u;;EM_tEy{yxCIdE=#0XS0=+ z9v)S%wq%~zc2?JajoQd7EGS4y(bgDSZN5ncdEj+9`QfP#cYRzaF>HCwd#)Tm+I5Td zQs&-wB_VG6OXj;veWnZ=Q(e2>p>*uW=aKmIqM3emNkOxn(hF;d*0kl6<78}_G|DZv zNIIG8V7wx--pN#Zb@Sgg=KkP~eUfH<+9HfKpO&hVT0MD`?{wqL_1K^*7Oo>^tZ^DO zX5QTq2A7nGiOF7n2_>s)($k|0cDSYtKf`}`!ttx9X+xewz_*b#p`zXm={lr!3 z@(mSdVvgL{aptn-*I)YB`>?!rG~ReHLpDP>DZBT@8E1Nj_xL3;ceeZ6cOQEUW%R2l z3XcjDR`@PH@Nmuy^BSX-R`f2Y_*A=P&)o?uUdk(RS#A5lfDM&b=A_&Qf>cV}g)5Iv zW}Vr2Kk3ec``6a)*>m0f)Mv|c&$k7P`pfarr{7*QZeH)^x_wkap4|e|6Sk)*psWDf z1(n-3 zmbDrJ(;CK|Yk6V3kbYpsm0vavQ`a_KCJ#$K{?7eGd~0xLv<*MeF+*g$!UCZ!D`N;# zebVRed@@HecI}+%CVR!PZ7FASH-!z%JaDOZ+Wz`euU+n&ReDak*D~3@F8S%+qo%4q z@m(Vqh!ywsD*Lf`o#-ZTS<+!BHZGy8o2w%siGd0tR^4K+gm?>zhA_SXY$nRv1943m z6gPlq0^S#_OOBDHpb(Wcn}Q65q3weCux1DanjFDDp;Qt6mPPJI{zXij#)YupWX+qnIVhoz?n&2Uc3S?hgB zGVNA}YwnU~`lLrm@@o*zyAJM=^!ZX-!N@0tlU_QN4*S_bt#jyP9)H75|48ks=aE=4q7$O=$Ep(+s!1{|#LESiK1TAH4rqIo@ zm;NWK-mFXt;5yCrFN2D(pi|C=t{1qT3M*ZIGwt)3LZEyFL#gxdJKzH`?vao<$ z5RK7HY1@A@rHve{9Fi}gp)VTKCJrU%r9pnms>SI+P4%sqjHN^slw_1VbBNEi)uz-t zE~vs5imcCpl#{<*!>ZtV{-ZcN1qT*5*VpkIRorQXrb;UDGHH`Fvh9Q@d_P{63T%6O zaQGSgfAO{26xQ2$nX4H{zL8+xpt|_iLHjy9+}{AmCtqJ3Ug=f@NnE(E5_A;t zrE6Zpd70y}L>jsch@i=+(E00v3D z^!}6`lxRi_RC)H|qb%(Ix3aL;D5_GIBgeW0?AvhGMdmLWJKJh^&4i_w2AsY0rnj$Z*`-F`e%c=IcoBrB$W8%9b<6LJf{IuBhZRvKu1ZT%JrD|!QaOLKwf8Egq_ir@& z8G9jLR8;t0K;qSCSgUYZuu{QY07zzSE}v@;uq>~H4;Z~kR^MZ%Cb;%XYW2FV7oenNvE$}C+cH9^KtyHibT8c$^BmRw$9n_a=|54Rbb8e zbzl4JZ`~?}U#(ws^=bKd`pWHHKfkstmYrRtb{T#3Xrk|(F^7VBKV2mrU0c?6QC&Zn z;w*gnYKOhpZ~Y*Lnf$zm7CQ6O012rb-ep-Uq(y+}4I;#JBWg$+wC3`PN!pe8QE$rR zlqIs{PidZGWGfwa00IS(eh?+3-7o1_hd+bWS=mVW)J6_)%W1ci=4iAO93E#QADU;) zvtB%HoI;y<>BEcOkF*u(#7=dbd-0NAZL^m<+AlshJTY@c`i+(m6W@PjmaSXS{oa&e;|(LCwmsaCc5z#2lV@JXZ$j-lQa4=C zUJ5Z~C*#|3@gvXk6I~Jj{;;XK@4e=xlfBvqlH350rpqi#-;;*EymX* zRR99ug(3|t^ewaM!9R9Y!eE%hpK?0Ms{;N?4Lri*ygi&w%dg3=5fb;Q8vdv;mj*?< zP;I^R3yyMCPw=TI5oXjNgY*Dr@HA2$Jxp8%u%Vr#i;Mu$DU`L@kk^ zo?#2RMl6IFYL489K73V%zON}Xe?aKP%jSZ=KyDUF#C?@@W*V6ay!@O_R$I4*(;9lWBvR?|k?Q>hk0qk`q z842Ju$zIYjsU8=<79K8dsrrb=R|Y-B0u9nZn^Mk>R#E~AW z9(Wk7DH|dDI*T0&;52v_K0v!12$#Gdq{=0g5k7R`>2~0IsbMm9k*~e+bVelPfVSRTY-O-a6(Ry!~_ zYomRDawD~0NsG~O3)dZpwQ3) zwRjZ31X2t-y{0K5n>sp;FgdRqA}rOuV#FEx(iCzp!tf$Z2O=I;hwKkPhZsvxOtWl2 z)+OXantmM!g{@GyTx5VVAdAK%9wch-D|+#fY^%UW+I&N~^1(8nnB1km3|{kQW%*h4 z?7MF9FI((Z2rG6>A3XW5Cu@(cDcyGNf{W9Tyr!_V*Uc}mHdM6qo1Ip<;12eLu{sn? z-R9am$@$!Yp&!cmGqQ>eg~v}%8?M=R#k5t<>{2|BaSYKmo+q$EXdwh+@u*}W1C!YZ+J;CW2w1!lbx9(MokKVum=ho za!Jg<04W2gz5&Pb~)QOe(c+l)gwZ(D#`3kf1Ug#!FNg7*_=DNPM?R>(S1IB`f}YdX$5|7 zALFw-wJ7;_6cL6Q*o6*n_0hqKSiF{KOZfrI0cr~tJ_Pt7=vZ+j?YrnB<{9u8=>KiP znQ<614m|c#KzN)B76Bb0;#}D4x+j$X6RRGyV@WW67;)XnduP%ySRcDE^g>iw&9)tD9NJ&q_Bpn9|6#{CvhFg> zUtME5Bi^}P8(Kn@tfRaV9|ODa!aUh$&0^0GBVKn1q!CFaICeWfXeEKKl?8J<3RR3I z48?95L!sQrri9;UBnKKe08cdjVA(#6HfscmQ?xrG!^q`X@ZneoW;po8g?MUTsfSno1Ti<>LIIAeyO}3}uRQcAeGgFfXuPqF?Ye zom3cIMfIm%;R1Ho*$o2YN7>OT4fFJ%r@V~LG$9CjQ>KSRl2&|NWFyyivFkF02D}x3 zn>f0U5gPEDa2nwNgd*7wtOklLvW&pg>Y}36a1UerJO)2b+={%BQq5S!C7KQ!`7|>= zgyhbJ4u4h~a+`ojYct`RbQpTi5Wa>U593WgF+Gf0%z|PqB%A}9F_>e)&53q$)e5ScU8iRuYe!!C zN3mA(KAglq5=>ml%qIU^N6_DfIx#W?x4{1l`7zW9SYbRHJWg)qidLTfSCaWpXE+!7 zk@P^5I)_+NXh4UC&h|avrgJPvIQ10a0w~flKzwf!?GO)vUY;!lYXNku9aOp^pX7#p-bPelk`mctJl_h+(bpjyg%Oj2_6IT@Y?`Ksriz0YFg`vZ zhLm^VBj@iX)Us&dk2%ggGjVFgd|Z#C0obws7=Zo%I@p4z&<&{r4oI&MG|;I9T7WST z)|`UGtpzW~!4I4^A_1f48-|*xP=1gFUdJ0KBt|+ghF{t0v)A9dYZb*$DoTia63w54 zgJ1#`fg1}3MFGgOkz`YJJ>xJ>ZAubwlp8|egb0zrtPx3q7=q13oqFC2A>9M_l!`(U z4bn(Uza|%u7kGO#JbOzgT9KwPI(4Bl=aD&bX!7(pT4)%%|6wCaK9xncZ2;b{YqWEugq;9 zwESJ-r23l43s3%<$Ism#`b|rUA@aC=LyZLKA)%mHW zm94Iuuv;-cX~H(Agv9zrnNvgJ=Ib-^Cl7ov=FyA`_nbwKSKaEq_TJ?azs-t^0}4s9 z(if|RTp|@!ABnPBkSaZ5FH4zfObi2G!&wj|xc4*OEI&xH+UGyh>rdMqu1ctgmJJSD z*xy5IIsasK>WP;oXWpN_FyPNG=JuDD&B~L>OPbR^_@)~sowP3;Fi>6OrW4<^LVaIB z0Jlj(1S^8U!W+yA=|yWP$tt3_0T`cc1UkA#Gb4|$Hb)1nB2-Ty+e>~j{ab55Cxg6(l948+S?f%SQ5Gtom!ENrM zKf=!tEM5Z-I0!`$hJu|y?t{ShTI_Mc*oA@1Q&wJo+^GTW?8`Sk*LGySN=xxK&hoRQ zhers(_1AVA%f6p?`sLg^WiI6(Ek2ST6axbg(4_g?{1c+uy&uAlF*#Dcp80=H=;6q^7&cX2v$#w$*)19Bh=ycT{OzP``e^Q^j-A z*3b+04t+Z|2+6JvpbR9*KQQOh{*i&A@xyT(xax9dJPcp=Q!Fx#J|#jQ$7k3Svz22VHXB|iz0!a zu!W|8Ulg47WFaiFpS-}E7}d!xM*=PA=O?z{l6YW$o*mu3?AwKK-_(0;(`E%#N7Fre z#(h}~vv|F0zMBZujKge&%Qd~?M5C( z%ZrBw=*}+PsbRWquHx>zc~^ssFU`ZW$Gc2e->Qc_bS1KTH04<9T^Beg6@TZBH0#ci zy&x*xREOC9n3@Hb6e2Gd(Hb^A28S#g4@1EM<|r9*tz#uT;9(AThNMZO3xK5^6(lOG zNw|#mQY_;NpEPEybP*M15bT|dBJ{i1>4WzxOnt(xlu|)u;Al8u?@3jd){oO0{@#yX zX|@gZxc(xO>K0zqAKlD2%aQ=*Pw>Ps z0MCACDNUWybEQHQJKxS|Q}yG=RiG?J?*L&8j<+vmNXlFA1i?OtU>{@(KM2N3H^3p1 zLv3s33%oy*1T5-%*8s~0mf~?i$F59&8gDxjs}po4rr#jTqw7(TJWbXy>)GWXZQ0$M zzTk+0?hi}XOqvQ*5puGJAyPU$;jiC!*4F`MMV ztS^i8n@4Y^TpMX&?YmYplAM!abNC`FrMHVU{y6?#e(_2cP*QD?Z%QG`+(Y}(hp`wR$MNdw{r1srEv>`6xVCp z85v~U<|8FETqox}d#meuA0ZTul;0b1jN@1I;o*{z_RZGm`paZ{!@xeU4EYBT4v)(j zmE((Q)VcgNNPXD}LrVwz`iU9k6&?1)L`{y;l3g*uayC!RyXcq5Vqz|o*{FJhAG5d7 zw~}>tXuzUdjI&7#>#d9Gpyq)qZw_UACpM=pzzFFGLwM@wSVA;o5ZG8WbO4^k9}I4& zfq}sdN9`X43cnVkZ|4Jj8~KC2?H$0yF~{xOR->#DC@(6tqo6m;QF-Zs-kq6JU--ju z@|o+Oj*|$9hhyOlG@c84^}@Hk0`N_PqdX12v_O=93WdPZI%mdiQVfoIu@UeQ>KcTV zNgAP&FZWL-Tk^DNUj8w?3+hRzHzpF!Oj!%+Enfa3!Eg?S;e%a>!(07sFiHlp^B;bftk zM!s6HhZ+`|lAiPE_VLNkD_+mGx|Lraq1&vDkR8a`|9ibGUSZ62k@Lz$js*^TD4#7& zc@0aEC>J+TCKaB6H}oXK-~CnCyyaNu@za}aK3Iq}Gr$lF3$`_LIPcs0$8qYa)L~<* zz%455J?$25W|3%GV})6Hwc5SNw*|7{{Oz0_A|l>9KYU5%Aa@f;VP~?wTAi0UBM4%2 z4dfyW9GlLnJiIjD9)1@~!2X0-hIyc`M>bcOTp6PfqPxxu>%$@6ohWq<8OvROl@Cw< z{G;8ZvdQCU1p3@pSZ-41%=8bgXeNA5TpSML*ys?h*biJmEvT~Dmutrgu3PR$SJ;=k zUJY^Fzp_qBlK(O7Y@*eIP2#K0Wn?T~d;h|Z$NTSSt=8Kpn6zGYfNO(w{$Q|QuyD=b-c0|L&Wb^F=Y~gWF*-68b;becsPGw=9WtlS--xxhDHIC1h zDV{GPmF z&l7Q-bkx}OyNs&(jhLXwd#VaaTb+E7{M7x$a@V>a+nd>EheRGd?PbwO_#g$ z#+@@V-{5MqZ)$j%y%QU*g$C2+yApBLlxcwK=5sJGJ%`X-(4zWuxV63rWCTJgRdb}^ zB0&3m=*NWyTGTPDB~J(2AuhR}CZy{X0wpO52V0kTi?GuMaagAJE|U*#wAdXaVcw{a z8iapYRWmnFNpVQ=--}xAo^WX?edI_s!B_xuF<6# zU+bz)X`d__i8z*8WK)gyj$6dW4SL@eT<+QV;nd4Dcaz=yDNv5a(8NeDfI-dkOXp)e7`-cJajS(J>bDIn8C0FbSzQJ4J-xbT^(|iV* z{o39ev+#nAhVXCfxk*S37ttc@UriZ>C>?<0 zqZmmk8OHZd7=k@fCS#fgqMPB}jG?u0kyeA$3dDRMW7WIC3Lss8~g09+zFj1Q?; zEd0e10iqt9jr#q!*m>o@VdqaRIR||{0UX5OuY4ghL@1?Bq}ekjozZ0ck@Zz@HswcI zWTuk}#|KHpVH&W)UW3=Wa(jRUuJQbjJ(1LD3XB1;dxSRke}XVSfW+~zj95?!&+J^Y zP+|pTc^mdiQhW~zXM=;|rP(}2CzpsF7)Wcg04wW9=V12_`C`VHnalkJ)STx+MFZIb zn^;qbnDQ)Orqu*|oxz9gKv-j+M+MHs9D$VpS?>**H3exKp4Na^2qlgApDO{EA{6=y zOG_3*c+-LO2o+jB{K&#rOzk*^edAQ@i(2G42XzhQK2?OL8%=NW^J49Ax%peT(OG># zcfzxQ<8w{kZZqETzVA}`5wp=NB5R>IxQtN{9&ifDg*~tMzj3VijP`*VjR-zGxN-A9 z%VxoR6*h<<>_NRSq=_L;1yg)XtdmT`{FQud`uUxUul7n$EwH+35kbFXKTmImpS{s4 zF*KIHBQDw{cse_cC!8|Pn5HXY1R#=hBArWw*`pudu8H_NEKwr98AqwpsL&dskUWmF z9M6PPilq!HJ{l%q!sOad!wW}km9UXiIMJuBQFDU)FyLCXMwHvsf;~RQ=s6<39s_?( z=nori{y;W88f`qkr6w0b=Ngmi0?ky7UDWA&Ee9?4X|cY^_*FDU&W+Yt%GTd%G9qnr zs3-mJ9Sg@ z$VAuH6F-mo7_p*D-n6*HJMw-SyufdpYTOl_;^G~wp8s@bPp9Mg-bdzwZor(#-1(F5 zT;FGgKRau~*-M@j>#p~s65z&qz-dBgKY3x?M_xlPmFaYY8-g9rN}MH|631f*PZ?+d zry;tf%uFDWLjKr{K427vkL{2@gvhofrMKUCCbNPR2dm=#;6@@OHg#<74eanzd-<}w zt}o`39ao+CmgSe{=D>RqkfkS@SEkn=S?@}_QC)fF$(a^!v)9LNwBF5fHdb`r5??jB zf8f))CuPfdx2@V8R%d@x-An>3>qK;1Ps}Xz2~+N-YeR%XNbUQ&ML!YkG<>I7Zc}f= zoLBC`WvE!`3TL%)@TY)Kq0r4K>}p!8Q|`Wome4aQoqp$jaANwp0NU>OnrCi)SkpOH5YZZj@-T8+A(exUgM_xlJXhZGC47KO1E4R8I?-A zR%fT;PDwT`gMDK*(l2~I=430bk=ftF=*u?dq6{Z3Jg!tHyhGVYIdbo-<#U#_{--jKQ%c@Z1z^=8g3 zoBp=Sc~<4`5}W)!C`65ZML9Q5)^AN%`%A>m!g4%~5vKAq$E&2#Ua2ar+Ek)>W!YuZ zp4GPmFD$OUr|DSynQ`kW__3rydTbLi%PTu+Q&RX2x`R((v$LXvZf6k1hRLdGZ7gr8 zzSR`FGAd%@-B}C!^CQb<2ds53S>2=G)Y0)G_%mX+Omt$&57VgLF;?)hPT2tbMia^~ zc$F7=;Q@n!+QOf`+jVsfwsb)X2u*U%kTn#&$S_>xm(MI3|96TuWJJC*joZS*JTpsh zmKCI$U}iSY33SUT)MgZ6AVT{G;AoTN1kpQx5~-s!;C9LJ3f5qOW1hN7#6d0e*kf=r zM8=pVFl;I;fCxdwR8*rvQTH^TM~D6hS|C_MALNJ$MgD4j3nqolF9B0)AsXz?Kh?|s zaqGgL0DbXrEBLgcYQ0n3#V<_p5M{T>px^QD!5`$GIbb?M_iX5XQD0Y#rOs=e?hO`Z z3w@wv`0;h%$jorGHKpc(@QA=ifc=H@y!k5Co>4(KuC$VGU=cyYrwo*m{-Ii~fW-GA9la(8#4mYdJLEJg z`RTRD*iIEmK{o7sLQ9oLIh!09la=s^sqIh=b9M~>66puQf)}@yM=N}5@Mje~@Pyia zgu&`nc#7vZ{!dBPJBnxzZib`Gg6}VmShxfE0q%??F#h48ECTRe)EU^+*4h`CG7K#AQIaSl z6@G@PPOuS%3IO{jZLacbvsdlv=Crrftt70^_z+nTk*)RWsFm@p!HT#?-)P%{&W4^_ z_h7rs&xD1y_9oqzE_1+VI=nq^`jD2|aDUxKQkMlLiVRI;@|)nX^$SF&eMPgpGzO{c zXb%XGQ0!s9_#mLox1{d0 zzUU}h`Eztk?#Tmq^6To*Reg7#b?hCAa9JfEOSM`ETuSDo2H%%3-3CT_6lZr3=Yv%V z{I<(yNDW}?kD)Z?<5;eMisO;kIJHwS+LlYVAj78`0Pz8vRbOw=10#jm((qLKeDP3b z!PF7Hpy1O_NWtJ&$-|Da`zIg~3w;!GM!Pmn&K7%sE593mQ#EjF!}qLF*@S6MLz-G} ztdzRkMN_N$WfjJmM^dY+jV|!y*WHg!On6}HdtSk>piH3#JXfn z-s#7p$tuey3fNU6sWO?Ho?bin)!?)sb0z0AlewBbm$~CF9A22T%O^QJM1IKcBO{b4 zh^^1N`C2RxziHoD_0sp-5k#&lN`=UHM$b8s9%* zl_YyM?@4x5-kAqmknw5FB?Dz2@f^us@}AnW6_SVE=PBQyOvhAMPNm$`X}GD=qvm%S zQi~*7ty<|pJ}7Nh#?Gw833| zx-LAcs*2pB79mKTm`WHN$X>j=x@eWUn&BtHT&JSB%ZgKr7Vk-YH5`+ z?ne)k_C2Q6CEpIw9uy>HC3ea_PB?$KA-rza#JpfX`<#61H~O1JD~xdC9YqrZ2YdCB z-A%%8fe!c{sj2wx|U0_-hj$?i9FjzW-z7z6iv!Gj_NIXhAagb;H^_c%?J)E7EisLx~{Z zVcc$WRKpht)+<3u;*WOPlP3)^2AcFgGtdS!2Rm9}gT!zve%h&L7*5fP7pBvbGkJaL z&A+%|BkX8AMU4jpw9#95NCY?is41&4Dp=%ViA?lWVb=Zp!If z@u>i7t7|>41OH1nozR2YtE3un@Rl#J1Kr~7?I#VSZmvL-M^nQ(X$AyG%YJkXdo%(D z?xRsu))`AV1sDZkjWmVN^u$-v`~T*|8TywKrzvMRKy(IUq~~10P?7~PV@t$ zbfNgL0L3iS2WJpv;Q+;hPgD@%TYxWsdJD@AE(d&kr-2i;g(ogqUtoC4C+kwW{!!Cy zr{&_Bql^}A2K7-3*i{~Yv(8QOKk0XMKk)a zvcPj+-skC$mz~A^n{;hEgN!Yv#{1-Z2cg_Gjo@1vmh>(HTtLr7XZq=p&jr+7IF3)M~8|6!_N4)@QJF+Tc4-CuDEEI@$T%2EvJ@u#l=6g zar#s}@GV|your=A!146F?85Azp2nghj11giwFi?}$%qvJNH$6i9<|s8B`%%1M#x+B z5N||ExGG%MY%{5fqXkoOV#@9O-VX0w0$J5?)^8s~zW5rd9+Sb-bRz7igTxM)~)_D6N zeLelTSI!P>-x3zGb;F&NSKKeHI=#Yoh?zO}u}H$8rorgYHr1;+sz&KuM$3kzKetI1 zu3h?y^~C$Gx@E}g*MyCG7xdX|m+_yo;?v1Fm1z+wFGyit(btF3km~vd+)$@6@0tjO z2E{}5D3j#x@C23q(PU6S&1jLs}mhca-br5I@kjGsV0PBIbwsfaJ47(

R>ZmBn?oUp1fWplVqfk9gN^B%SP}XN%M1Oh(6W`dsl}Dtb?Lrz zzA}mH$g^B8O&GOg+X*7^?PeN`qFxk!mQdT8B+I1IB)0Eoh6TXGq=X4>1uo2IJ6g`% zC6Gr<3L|s|eC5RYuO+J=VE(FWvE+oi`dF0l3k$Eh7S#~U&pw}SZ8komVtd7ZbCj!n zMbwj4NloIE#!W zLbU1hZ9bQ?YTPjve5foBP06)sxr(}uR`Tt*utXb$6gLVyu^0ihz^KRee+e`Z$7r+M^IrBt~8?8#S&k*$d!EM>P>(17RiN* z1Lvo1$7r2ZxHv2!u~IU{L!i((B$a2Z9a$UyezUQ)w#o{dwja2?!*bVJuiRT5Udh05 zjk?j=I^st$veB-J4@=4%?{`p>#;B!!xaKcD4+iQ5k6rBkBKoc&Jz=a-vFkBC>WGjm zCbRJQt=@(4R`=tL47NHqd+*cUkoak&H7;VTeA>P$d+*k;m7#qhTdc3e1$fz9xuYGv zhOKH{YZ@M6^GvKu=c!CN4&Qa?)#7u_TAp*m=?f&*tiuib)LG`m@kjQNyUi!&aIU#k zTxnyR85r)Y_9pE-{X(m4I{)1JVf+4|YUb&NhYbP8pRyt@o-~wSIHY|d_t~ouTb;z1 zs*^S0G^&}STgR~n=CM+J2B*0sV-1~&{Raj%x4G%Pcx!d1{-O7Ia%sU@L_?;0Vd2k7 zCp+jr1o&oe^}bL5Ndek4gZ_Kw#c-G68NQ;zgRBL%N%em$5@SGlo87}0a-?CE?{3Sr z#GPzXxj}og`kL`ctIMDmY)OCPu}vm;kEHYBOqYxtsm8oXY2}#aD7^)B!I>7WhnCZl z4YkT-opMzNc^0`%dP${+4^uP9nrfvJQae&pb6T#Nd!J5<*0^;eK|_=J;`r+52J4s=o9YaQ3f_m5>fL+grm;X; zH=1dzxL0?cV_q$?e0lH(k=}vq5^+@+_P(xa@!DKFyrZJX$depV;<@;$ z`q?#U=O22p;Z$R7bW9ez&D<(Q>B=Z*EyLe_yx!`UImxSZ>rJxMUM+ro*hk;QQ9V4# z>E@FUEyjz}k6phWPoOskYs*g17VDjrx^sI#_a*L`y3I4gv#qyIZYPwuPR!@ro7i`Q z|AC{`#*oe4t4|0SSxReB&5Dpz8$R72m1k(oiqf)6))T2Qve%E()qdpvVD8uBg%k1) z>H3Am^`%Q?H01|;Dtl}ZjaNIrjWH}OETWgz;rfrRVTs63_GO`BSY-!xdOY)LX^efT zh3=MfMmo;Nq2$Tp3pzD}LZ>>w4F1}TVuL_M_#NZUov|E;GOQC@uIYl0o5lftjidbG z1LO@xN6`NL#2UXpyxBWiVNzqoWT2Bj0w)FPFLTkFZiCpulQ58%)rf?>X~q#Xz(@X_pg8`j4AY@`_N6;VNjm zRy$4*$zKK#T<|~Fg4Ta*Mp5OkiJ`8Y5K6fy#_on!3*DYTftk%Wg2Zc12HRKIA_fNo zHhVmQd(fGihieR@vbJ%6QT#6kIXYd=5afLb+4-PBXaIS63#tIz!ULUPEpuK?K;Yrn zA)-w1pf<_ib3N)-07|g^3#7_MR$_5An(JL7_1P4 zK>L3W_Tc{&?4kaLi3+?*Km1@2Qq1T?g!Xh}fc#K|jXVVhw*1uk8FebgBFA1g9k$xR zslr-XZvjcomq-PXsgNcDPVz!f(F)504;{ZcKIHXw``x&}jk0f6OO*NRGe1X*?;z-=lNyZo{BJw*I#zi4`NgtL7|x z6S(Im9ytCYKgR}L@Q=uAxolW8n}n-#bC$D{di46aU#GT6XH<0lqg?TOiJO zieKav*RzF&&MMeOz2kUJQT6vJ&Rky3@sq=F8 zZ-mOTwQFk^-E64a_sr`IqjQ-rf`9G^qn>UdU(WIJ4H(>L%o zLDkB$bA?yIi~RV6wqh{&@vt(94^loF9prjHH=?BQ%wv^(Yjh=#f}5(Iw?qHc+)tfm zrKdDD<5!TM!a$*9e`oPMir^8b+r%~?emq*Pixs94=pYDPg$4zVY;ppB5h~Omf$#@< zFc=&RCWB2z6ynbpTB`ZFBCog%K0+@@cEH$au}8}qz0*^b4a6@G*%v%%HBWb~14e7$clqxR^#i|@jpuDDlMkgnSIko(+aV|SpqZ=U8c!PdNH z0p&AZ>8;vVuWDdx^XNQB>w*&&t{|eJvV{gB1<)4_3WO{__!*`F2jb3b%b3Qna7)Te zh*>q0PqD@d!_88`9tDqKnCG*npx-Ja|HO)-hFQP18Hxbo(4TIT6c)-0o%`mw0M z2OH);97#f_GzW(w(1%LyT*!A?xX*L}4tWEM&@b}Woa#fNe04{1sh^qGYT~Blh8P4O z;!5Uw65kAD60-`7(J(v9=Gwtnm;N~WZ5-EM^^B~nfY8ml#-x%{HFT@Ngt*r!uafU< zk5p+=c^bJe@_4RI{ju#fi5G%Hj0qQJ86M$G83QLn$k#D} zo)EM8fQT)WN8v01aWWS;qC)@wQ8t4fCB`OUQ7sV1q~i79CH)cQg79s_XfeY8!C)tB zPh1Cd^vi{wIuWLp{6PFORWRUFhCh?zQgF-B3HJ%j#`+gROU1JShUBjG%oI} zv~DhBozVDI)~8IbZ#kSV>xlO|W)+!5U`RTRMeyCWr+JZ2Lo;{+IVQI2_ve{;#F6~v z&G(<10TDeg@?KQduDwyeb55??0q&O9^q@vQOKInwJ-SLt@1 zT1bk}94-nS?pE0Rd!ab_bDcZ~=Z|z+UN!4w>rCuKZGAVM-G7k!!1r!p{Ayk8Eq1Zp zpV?Ad4$lqlFni$C>Kpof#CC1>wgju>m$C8HhxP=LtW+Ir8yxN#IUUg;osQ%En8RA3 zvZ&?e_sLls%mxj6VsPCj8D+0+!l$(+bsW2F_pD<)u-tmX(-yxx@oP6%G;=&h!clE` z-68f$<2(b2r)sq|G5!fhV_YwO5^W3_@wSV<+;U;N&zAtCtjc|);5&6fpNu+DIk~HI z*&H~Ddo`*PUdBPr7cJB;U2Sq;Gp*ZQ&d>oO+xC|UB1J~4`xzds*;y6)16+U8KdG4? zo~_XkL2R@y@`#FAwO;cEjkQgV6J*w`bUU&$73P>KwhGObGE{U#)nn+KzOU+?K zw1%ajD%Zz1l|F9tR!X~@$+Jzq5E&NpQt^OoaJ{6P#K76jXC{{S?7Mkrzm>(DH?t2n z`{C`!04%!-osL%NK!Mo&A(+c2Sfr)g%c@}g&Z4Le(OV*Bm#6g)28 zQ_+YMT@_fOE$f!({}IB2lCzUr^Sd(cvUUxJqXgbb1SZRKbF!URXCYeRBa@gwI3b_25$a6c3g%7Xur^|E1FBwWlZtv+KtIpb?ZzWS%H zmEZu^mzWPEi(#E!;i^G~r2zKTPXoQZ7bE20@OKC)UgN zjc7&wX*DmZUU$|PqxQodt$rbK*bZ_B4oXHLWgr=dx69GhfIZZASdKlWaH4*RC?VsL zQ=^^e_y3i529*2Yoq@D}jr=9j8fMx%IrSG+30?ZKtdhNJ5Vck2drUpgfjG)X;xLjF z!M$JkJbG8)ZHeks%3w$qwkov{jT7!%`I`ad@=9DkLEuCj9CA!9j4pqPmV*Ce^s6>Z z*(CT=*+l8Y3LSuy90iTDCf{PaI99{iUIoAT2U-3d;VmX!auLF!+%_2&PEt>g_!1XsKKlZ?QDAdNAW z@&Gpiejt541`>HgJ>gtAjU^QdWg1r41!6@tkc}`!0gj0g&QhrO_K&zBN3?+lpK1|f zF$Se~!hcViMzz+prs_A~Hz~DV(h`i9Ul;g4`*?hC-E(_bQqi(MDrK##TuH(f9jErz z+C|EbbOka^d55=mSx=>Zh1-m+MaV-)i}`HH*c59h(?=tby3F>~eqLPQS>Ulyh6WEe}+7 zc}d&13~Q#2+_-u_1EPRs&vA09*V~c$>8lf=G2KbOM2-oh8rDAam7Gg2GQ`c!FFLt66wfM5v<$dF- zU$^gfluT1|h_#S9b6>|qA~@{p10|VeAC*0nb4#EJIuCRHQQN3wEdrnoenbusG<1GxZZ!Ao-xnla*H>l;4N#XW@Qwg!f zTATIM=4<+_Smh$NGd{NA0)zOKVkocRa zGG}Pl_}z<3>9z=2v8MCpv~ z`drv>_5(U>jcDfiZ2Ack#a-pA4E55}=NX^ebtd(L2sHJD1qLFnZ%LDQj+5v&!ejBO z;T^%r1Lxy{@@%eeyLgqSHtZ6%ENi&!eSD-xw0cqSn;?m^M#rMoX&oQ(mpP^$L6Cb; zE1KcDd!oLMm-2C)NyN=6axJnD)gn##PYq-N7X{yWzM)T>?gxPh++DE>n?403T5_KT zdAI=n#Nav8U>VmWCaF)M0<84~P%a_)Bpt#iCe;KcxCXE^27@tEl2jRiU)LP?ECsec z3Xo=B4-E|b6fSvpgqv$tIicCl0n@)kpS{ht%Wbld=C#A^1-mWM52*#KT}t3tS=$%z zo`*;suGS&sI%iICpFB33Go?J+vs;f8-=Ng1W_%pS`aK@ilzwe+?f0+wt>X7?yu&L( zfxX)+-m#L08$hJLScv9AzXRUY-gmG^H`))CwP)%Y*x-Y~ed7@2VW|hkkAhp^1;F-r z>C6g1fj3h46AM?AIN*I0_#WhA5snrl+8gLA#t(!qAVXHjcSeC`%McnyQk&t=$f2oT zA$y<;X+J>zuDmYihNK?H-6yj3Fv z%cbj{$Ssb^_K}_S2;=8XFH<1 z-@GS(c>@{l?Hs>&&K-lU=uYDO7k@IZ{sMdd=l>w?7>!d_3FHv@PHp5(-o*IRC)<}@ zQZgxvO^JKeBJ~UkA={j+o-fUhPKM5VR~mWnN<#ed6B%m*8R?e@7;5Ep4#JKyD~^+hje}O593JpPA~C$+b;t_L%vDVU@&sr07k z+v;w*d{hT?$<#J6OfEY}f)@`t4p>CKHsgFiL}0)2L9nRA?6x6Q)Ix8EM&?PhAb#np|K+v|$h%fTqcAQB ztPIFBI&j6{eu+&7gYl{c%O{tPt#`y@>m3htxs$A;h)CyPDT+C6CxPR(IXG_rX%z;H zu`&>t0W+H_0IM)zKl{f9ssCS9Qut_mGPPdl>q+N{C1fTG6j0n@VF-a~az_i9ore7Z zp6e>83z4`fA$3!r@!aJRPDl1eLyP)4Vp-vQ9sTp~Cit zbcOMP*bwo`p!nb#+=tzDP6b<>9jxbGd=|g&Kxxdqr?bb>cck`*@3&4n_~`D^5X*+5 z4^8?u2Zo$zKgQ?!e5#zNG%uPG^L7Q9uXJLwRAxPAqs8r(mGud)Uc5P1*!10Khm}H> z^1K}m9i)AJ@i)^H_EfA3@-RE@c`>ZKuC8|P*nl`Sm296IQr&%Rz=N}U;^KhVu;~2X zm(53#VfYOmiOsFKI&^6GzyN{A0LC9kndw~TuT+NfD1$u17a$L!Q=sB~y{?$Q_u%Z^+`vf=d&t$< z)2-u?>qeZC@yA%v=oCApx)2A^H<10cr_c~eOV)*f^vFX9}j%qEd08?o7NPKZ} zc(LLU;=k?!J{77P?YE`42h>dmDraISO4;NS<-`Ex=eYxN%G2 zK(~-O3{(C>>dd0yeyDk=cr5==X5+Dp*5^b69`PvGSECU7MZw{ohSQs*b)eXvc#U(3 zc-*KP)=)JfV<9OIqg?pO9Lb4=X?GSr)FDh2%U!TayxMVGozY_cdOP>{w^<1%(zP;k z%M=KEX8mqR-)gsR#W?$e@?rJDZ{-sEL&EWw#PAhsbC%! zAFg-atU+n?O8ZNq!BeZi+nfmX!W?>5n^}00jw12nz&3teZjfh_NVbXcs>`+UH z@yREt9e5yLCcx{q8o90R#UQ{X1tCiuR`;-ZbI>t}$)GL7dN~wNfwvol6E2?WgD*y> z8*oB0;V1|p$3)c-ArJEdZb+0z=OMzOfFD1g%M7dpusVS+#sd1oLkCAsS?H-{LS-kqUtJ=*+B2_3InR94x_lD2=lX{fVr!n-*m>VC~~JFD=APJ~l$ zDv;NE3oWRN!`@HsaJQ3s!Mm6Daq$gY&5&akVR58uHsQnME5CojCjQ%k!NpMHn$OSa z!7-V*o4yqja^BU$EUQcFnrt ziuL`26XL}W{O7G-`Q%AWP+3~jP}ZFV^Q`fb(L0b5(Z>^<5MBT5M;)DRAL<2JgJW`! zrQ_;I&-nLMQZREdQhKyMcW}^gkeNy2I|gD!U^+y2o}*CSfvw8|#I|_uh&PUt^aFX1 zYbh7QnYZ;e@hoo%T}PD-Bh+Ap2Md|hL5b?;uj0ooX}~TzUkh4mMl`+wDL@FoJa)ec z|JHjobF7KB8RmC>Ep!?|kseWy6jM7}0|i9ih?ZX>7+f+le#G}PFt`LM0m;ie!CSCG zD4H%A&f~O3b!gB=gs(h~&9dw2GFOhxTJ%AKZ9cvg6;AmBU8NvKbXFchN zB7F&txwP>XvfOE7zwLafF&e+je5JfsMjS~EqpC5rOVLV$a`HD-KZ{+*Vl z*8unnn-q^#5Tj);K|lygYFS{hXbwap28@WZp`?Rw_ovq=|GCf=+;X^h5ROXfe_@Iy zT-q^@I%2P~7Rt0^P^pu~r2k(=kxD@0BmQr;cA(k z<>1O4q?PgGIkQS)_mKO@yZqTNA{idp%S&9oQx|#O?ejg&d3Yl}R;9)L6{^WJE!}yW zG~^K5Qrmo2)MT{;SNU23dw%n`d0Tu|_Z4|sClp!t4?9b?Zh83bhuVAH^(mK9QWUq* z43`M*)i>X$XFJ&-GF>`}}Y4rINsi=%-2cM@2VRG(b-nb^qf*Q{Yx$lXFn}hU5ZWaz81+^P5j$PyF%c2K^&Gmp}U)ZGDvg z*yJR$;+%ea*;Re8z*+aOVDqMs+AC)R2nHc`w^WVf=&wdTeRJqmP(D-g(Ar9kP(gc) zlEixt-A%qcS!twJr?|Jw(9mc{Xzgi&jNbmqZ#}wiBhM~UODmIEedUtgo}AvMU1}ao znT1vYmM`Ve#c6HI64!@<*0Y^V|zamP02$fK--X{sd@vuMaLziFLcq z^^uv_Xvblu5#E~~cA);MnyDN>X!<#w>*-D?lD;z%;It!0`psxhQ{A3-+OGqzvx>{h zpU3*th)VBU-O;etW0gx7k|TF2Y+>i9V~UUZw~5-Z5DE0!XL2cNs88 z_E&-6IS$M??4Y?adj;@#7=lM6>{Bov<74KULLmtZxWP_=z``JGkcYs|PhtHzC?Mg< z>^rby3ceRKMst|iHRyIB6Ozi1L<)1T0__V@CXcSvnQ(63yt;M3U^JG(Q5>g=FIg?O z>fZM&8uZNEnnlN{_VbiJw$&w^%6Yh2DeQ^X-E#kzXI=(G2T>#!*xhyiZjjo#sKqRJ zUVrHZw>@YG2iL#2Cr0^jYh2{W_0L6Ki|dPS^KCVb@U^;}1>0TouYP9q1dc`Z7H!PC2w@Xr%M=TAQYnOt}V*N~qC`nBtH3;wYcXo_vi>W*@mT*CJ=g z{Ou3g;7-y#zTFf2u-`(iqF7nNY?^awi>Yz)=hVsdYkd=MYP3oFCCz6Ms?k41Jwkr@ zpY$Y*aNe(&#}2O=9L@}HGoN%BE(p$05-7CwW}A$Dw^FKa`fTVabIZ7UGAA-|$9bhE zmD}Y)Yz!55ugQ^a3D~y9HE3;Pm)h(*x;&9evrCDK_K0{zOWCc#)-AOY$P(PWfqUL- ztn7?0G;sTH$JTX7VtS$>+OJ6wJ*w@NlqK)Pay>Ci(Zfk!J1|Vv}*vE?UQiD!N8aGo`J z8gy|sHXi(5%2+pd|C7+Jn1HB7Sz~2tbt{`4uMU4(+dmd%?qFD^ntRId&`Nvxd`gOq zY;d={RAHrk_UihRb02s)$<>C25U<8h@NVR_T-j&w?F>h3vvh!(-=xOnsdLk4I3G!_ z@LS)6)=&8X6Dbq8jlgDX!)kqqk>*jb^8srL2FGcTC;Z@eX8EE=6l>F5$nKq|Tx(H8vFFHMI>3kU$ z(|bJ%?wk;YSxG~EFy8sGNT3VZiF;=kp$0mA;QhuGFh??`Q71mX6B@$W>qLksp3PM_ zYc{?~EM2&OEKrQ=4&}PB^(U~w0`%2UxPj~kznPEVhOpKe^8>*FXa6EB%Y~o(?<-CO z_^ND!=3gR*|9u8TR3-oOZtZM8*sU#;sxv^UUVwSp#WesF@=ro_9|)TLAn?HHL4S@h z?E3{!oME#IiZ6`GH+4Yt!$QK}m{m*hJ&BmTD^mHVQvJ7o-)-`R!QTmMQpk=j(t`}r zG-&ySX3>mx6gTMW$rmccUgOHS+!GOHh)LcTrzhBi`e+q_S-;0n}nB{gw<}(*x;~D5BI@6C}n@W+L(RX&_rp1=o|M+*P z=ddH2GNu}Hj?_izlx>OI-Mz@@&{`4tu`gnFA?<5L8XUV(3ez;6;nKaR`Be28oU|CB zSflC_wW*h@er}75LO`VztOeZ>t*Usxv_{7?sO*xw&CN64xVlH<6R#!3cSVLLMjzr@ zNIfCFV!ia5TJGY}7;)loM-hS;P@DT!@`Qx}<0k>C zC!oU#86sdqO8o**pc;ud2~`n#R0B{2X~7_1II!CU$Un&44l;SRS z1^(h_?&aW34N`WByL!ISObSmgyXw5`d!F6(r*X#O+NLI%rQ(A@k&drydX9A1dTBIs z99>#m(u&$YB9cFeTK=4qMzukiRE{&hyin68VVzWpylGNy_*>nRu01~}i4#|@<$s?V zcYO5CBqYxzO(#Zek<=E&##Lxd$t%I@koK;RpP8G6)v_;Uo-*^uzTk8H0IrWR549I; zw@U2cO5+ShdT$QDOj%O8wA>o1Z<1y%b z4QhKOM5MP?|Ueln!|S^ptL+~$dPM%dT*Zp z$AP{_GBMXO-8RgcJTQmyp7CXuKaGEJI&*xovqxj$0n>P|z)RPCo@6Y1O_upE*6ej( zs_uENNE+dTGQO35;-{Ew-H!S->>%?;jfK?wd|5Q+;pf8Ne-aPhP54$nFEi^-tH#hTl1bACPz*#x=$NKK$^> zbpPg!9Vt-Y!*fD(N>*SGH&KZni zZNmLCzDX_kr@*Q|DMsn!6GTxZd=X#0@`aX^2fP7P4l9n_(IOHHH+V)2E0hHI25F?I zUodZmN>2gS7I`eYnvV(EEkKpS#90bUSnqyR?ZyGjPzzq#Ie_2;NzCCX9Cpjk_ufW8 zwhb{AquEjr=(s)Aq&;y$-3Y~31NN==4niZ0{nMZ+S&6~bn6Ds6dI7{n;<3%t-U+7_ z>z+1!I~Syqn0R-iw&4;BDc6+~)h1PSnuD^dR%V_|)1P-_?*?lZYwHcm4#D7e_F7|t z$KDtneLsYUv7JT z{MJd)Rp_OM$X>5pVhqGT&kwc4nR_Ttq$P98^b-d=7iS8@PS2teQ_P&1c+M#Qgp856pS4w}Ah5O)f z%H^Cn2*BQ6KrRv{rmWW-uooNmHyS>PbixlxekFt62|`URC(xcn z3a|PD^lgPnR~qUTCLY?%s@m~$`9)W``uw{Yhqca??V$a5oWxs`hbmTS(+)D=6tB(- z+C$iT4z*k$c*)elZGuf^Z#Xv3NjLb9M}x{n7B-!YiIUXKV=KB|Y5kN>pInlekmC&*7*DRN`7o8dM$lzwHyNj$ zH;KxjicIe0u;VcmHeZwL1Q-FW!1Wz-l(U9+6Auf=G5yU~BmqyFX-Q0a2T=_u5XW%C zu)v-eP8ITRRV_s|Y(}u;8)}*3^fWy;Yu9K@%vaXZZ?^TcEVGF9%oQDbr*mu8k5xM? zUYwaO$SYf!ny)DS`IFD5jvA9mkb=NC2T7~g3_QqG?=iIteUWGkbDsk}KG9r~^`+pew4zQ-q z_I+DxX={~QtG0?BTUQ-uhl*C@)cProYTOGURogltqM{&@qxG{`t;A8aF5<=oaYtkv z6){+gQ4xYNq6CQ;AOy%xPXG7&9_-hC->=v8zd9};$;msO{oK#U}U9$JVMWQy)u}&b1h7`ob2JXt%cF+SR?_AC?#&^s}pM*#FQTH?DJa zDS2w6*RdE7BOWueC$_V2@yQs8vr0LN$FM7tR8rAFU(~dmzrE%9IQ+y_Zsg#9@zSApms(M9_u&#NGHxChX2!A{F9D|3ith z($04>C?nb8@C(8s*5Na}G}xhL&$AFQ$)VgBqRA?suEcZcZkpG$O6x7o?U$U~R+Z(V; zD|q~Vo3nD`?J|u;$SLh`e0}xlgh~5|yJbwiWpaL%>(Nj2B5R?83fD-%K?jQ>1# zm1DJJgR<_@V=hk!{1C9Ty>|17&5o-&Yd}oHW)xB+z{AezXXNr5_I=)aljGS%b;4rq z+vkgVewub9w#*Ve?!u+{CpKzY&iRzT`FR_+;=`}XFRs|0HFnJ1_tMXIKe1P_;$X*D zla4fRIVSbP&Tbc-Z*MsxDhkCSK-0oIEikbmrtP zxs#_(pWa(Laq`6eKYzO`refvyb4T|XZHrHkbUM2B)wS7<#lc!C5C<&f9 zI&kWgoh!~~3?1kHb<6YDCrSdp-aaf4qvxYO+_|>1zI5Yj?~MH7>V@9Dd%u&_IiX7h zt1U1|-+%xfGB(0`{81q{*tPuJ1-E|5982NgSjDk+;q#B`m06Wf4l9PHuN+xhyl>E) zfM&BN#+)DUzGqA5(9p^0Tkk(O^v;>@t}c5`5xBj2`o|y59Up%pukP(vPBgssmha~e zH_W*^t)lC=8|_-Z-FCto>}S2+2s$|3bAajRdQ0nE#A$u&^59nW&q`rg=gf>>{%A5` z6>qQR-Fe)-jvsI#D`j>>iqjJj#TYgdLm(v1rc+s*UvE_;D+x${tg1pL7%J;3Y;yrRE6E`IMZ8_tPk=1ZqCXxZ1LR} zri2@Jxc6?C4f%X&dC&A;hbB$h8vVRNH{t$~h12>b1@gajIIc^3ES)|2%?$%|V?Q05 z^V`R7DL(6+xJi9?Zc)F>X{X1oTK;+Eu_^1~CoQ)%E%Rnc(;zkX$0me=WIv&?5DIS~oVQBtPN<9&S z*Mb61A{k8{t_-FjBUV82H}qv(6E2gyV&&06yL=k$F3}=mMBVTVSKG7GqI?$1hHgxr zbSdin-^b6IIj}lzOq-qqLl%`c3wwNLP;*(`snHu!g8se!yKQ+-7q#40QeDvQ#k9J7 z=KZeU#{K+paQW(som4_J-(}_1iT7>aUpJ*ZIJ`EgST`wnTVaR8slz4+vw!UK%=WP5 zl#bm4du`~k^+wj?4Ob(7oWSjNy526X8(-4*_~pb=zdGmqA|HuRMEmD2!Wm=g{rnu3 zkL&$7?fYqOzaKt3A+L1nkwstb-raj!;r3s1x}Iwl8h+!FV`*sjUP;asV*|Q`oeXML z^)-9+1MV7g=tqUKV9lo||2_7zl@&v+pSV|NZ27Wo!{nvUP6P~C(mu>1fA&X{6P;@M zew5VO{l%!_J?XE0`HAwJ!Z{^sm&`b>_UfQx+qzZ9JRVf?;El`vgLZvCwa>Yci$1Tt zaemZ@U(yaQ3OtJl?ZXkCU{%X;r7eB`?c1E|2Y>^ssakTG4zt%wts+22VX!%ny=JwHFVV(s4&g2la>Rk|%c@ znScG^mI%Iyz+a}TYI6wDjh0m&8zxC`r zke^-?GsGUv7q!2-dWm%Wt+dmx?s?;_z`r)XNE$gS6?^R8| z+oEe!t*&}a`?$@Mohv#&LltnT|EX6-y)b%JzK;9SJF1h$D;-WQCs9AsA9>Ve8SU>p zUmLgWoLw0fv9a69q9OK$HU7J=R33_cFze^Gm01PfoUhI9dM>y9=M#O*G*%vKY!f*WuyR9&#o4Efa})`ZI45#DYZ!hg;850W2fc zc`GO&O=Z0XD1(4zHiRAkg>`EV^4aXP|YMi}*jPkb0RTK_=9Z z3)d3}vUDGJi!Or)L1tl=0F{==CIZl{Cws`?3!xVxG0;Rws1vPBV9^ljQeYmM+6woW zJlD5Uj?N}Bn;*GPp8C*cISB8Ce!K*=LIL&^M8Ofai%0*;b_fw>I9?^41hN|w^BmNR zVNF~ga)OxPT=Q}UcsBZ$n_bJu@x8F>-DaEKAj2x6i78t~aSkS6DuUF!n-=Xs3wYji zEf+|j{y$Tp9tr$&eNqhey4=j!irooA!9|gmwV1N}%02rw!CzaYAgR!Pjj7OUA*&*k zCa)nEaa1n*?g{Q(Q_IV0%oBf~htZF-1$ZL8gW1G5{n3)u;Nob{tm2Rax-{zKa2k3U$wcsTmgCP8d{sR$ye;rSXA#g zhy97ItU4g4q0V#B2*{(e9uSq()++D=)EKhxxy2Y0iE4d9S}N;pg9+Ww=~B(0GYf4$-ADF^x^GF_kF;c9x1x zCdp{=`s!Yc$RLYUc^2una|1>Gv?s*$NMLoH@IK7t0BA((An}e>v2h&v8(Pq_5|fn{ zpvpc)_UvQF)hiKKoZaeM4@sC9nqhyv_o1t{^9#OBIOU&u@x#NVp+8L>Q@%ji?n*$* zd2f#YVDzQ&ua9t@w6~4j5O->^|D_IZy}iYjnD4pP!uiRIQRQiD%Lf(KAHNOnE$ocm zX4^gt#R>(6Ke3?FKOR!KN+BM17CT)lhCP>79IKQ6uxsyOKi@^hr6uOICr`2CI6e9zFhu&lYG+Z$g0yzbrt*3h3-PVCpeXkT2} zlXXR%Te6=5m)G9s)KY>Fb6c#ouFr=EEi*`CG=Fgp`-D zDA5&C$@MBK3<>CvNgGhC5?sY%<4_VT7J)We2bU2k=xZs7z`@DfO*?+2@Ql=CJ?C25 zSk`9FOjn5I-56S@G@vYlrvi(!u0y0yrlnbU#HA5jBEp<9U8YM8s+~tj?mF+*g5csv z!XZOeDXTSrI58Jl=6J$o%pxBSL#j1WWmvctT|J?`s0dcanE7^e z(Woq}>cbY!M%;{SsK{&ZDmPjBv^jQwxn=&1Sce*EnO zd&E}GcqCU~Ul=C~1C9Tg8UKU%KQrT32|casQ*9uc5xVRQlvAUDtqX7gq;9lWMd%tg z_AykKu)hO0oZQHA4k5!=IjU-+m9-uiGgek-p_k(HC~d{S58#CP!pDG;=n`T8^umT? z(I#2WmePi}c6T-aFO4Z!y&O13dRS)FJ)~wCsWo%GD0IT~SW|(K+yv@a@=RX;<%@~> z)tdtwzoSTC8HH8kc}8jr)YC$VFr&*m2!L@aY&G>-w(6CaR1?dkqerKOY9GktIOxW> zTraMshC?Smhl)^^aIFc85!IM?&`j_Wmi|r%&XEn z@nu!q+nK&=WDaAuz$wn^4Z1RTQqc9ebt^WCpMWTk4e)no!;&9U5h6j z9UJ?xT`?pd?yG-+t+ta!u5UPUi8FMbZhTmxp5?z~=cU7W=bH4d51b)8JQA!fzv=HyQq_0b(IX2rHkS@VrLogiP(DYVu?ZGy56$T?d=>Sf!^v z0_`bg+106^pKyyPgjp~!DTQDjhrTKfXQ*>{<>?5S8*yDK+`uZWXS2|Y>q3Z`hu$&M zpm-!C*iQm4C09i3{U)_OgtQhb9E$5?DkLEf)hxXMEfrD!L9RTL(=U~0lD_Uzuz+x* z)T_(*!tOFctYlUclXviyvLtslUlfaep)SGNpp;5|Y!O5wf@7;_8y1n%4y zP)#$#_x`RGp476X8zGk|%HFIpV8KT8yrz3JHL!IoIW;Y70h!A*MEZyMco7O%=@Fs{({MUr zgfozw!V#yyo27XQyr1@UeG5QE{$*cR%rwdP=b>xuUJhM*!s?5zvMT%L0Il$^7l51Z zXa$@<+Nl3mZQ>JwEx>vJUvm4RHW9i3C%n-p^rY?{>9I~t$`oGTeA_%ulvefvHFT?* z@c(SWe_-Sdd>N%82!DqKu14bx7V<8A0j~Tigp40x?s^yFNCL&A2VI6*qzZ~!VDV)} zp+9-RQ%+mHjAq(8v5dsll-AFLqNBLbQy_q?45!-7;9*Jh$fXa88T)BYH10HTgj52o zehND3;3cSCdjg@)G+dk-QjQkgoGwz-dVCvYlhWA{Qn~{<{@Dr}!jrZLvWh}ju5suM z=u0n8ZyAQ1dXbo3H%p%iZYtD;k74o0(IQR=V-UYY(-{7NQ%s)-w}$?EmX#3l@uH)j zN8%>dfJ#0H4mOku@#4}93I}j&Li#%L3U`wO7x+2|A?T|Hi()>UT8bvp{dbO>_1hZl zp)Z@y3@#TUs7;^AKlO5Y0{RJsbzRM8S%hNp9+k=?gXMsBFXUT&p%J7ep|*t=yR6~- zI7~lDrD~i2B7Bru_hN1xO9*de42xEMPq?zn*h>CgR6&|IYU}jQ9SzytrENT8Q(WCw zIa?I|7~MH>!->_UX&r;^WKYYQ@#FT)x9#6gpR@2(Prt#+PWe5CcU?APKyI3%rg~TT z=}8N@aa_@~q`FyqU3rI?-i6-pD_fs0_&8R3EI7;gLVGvfsCy_aZvF7WpCv}z9|eDk z$b4A1tSZ5$Jiac~={rJkc$YeAMQ*1aFwYJb)MeN9fq3b8rg8D*j9u(T-ZF#3(6>Z3$O@_92~uLFjno@Y zoKKjl93}J&WPv@cM2d;Bf~}dSM1AYPXJ~wCjVD+xnJSJgmzp6Ki0X^2Yj#ELh$I3h z3fIjz^bNv(a+AD+Oj3e`x)POt#lvN?2C)r4gi_FMkcpFu6pWl)M-7Bfxi3u7bH>Vs zc61D!9sm(Z#ouF{|fk#UDNhT1w7qXq7`$wXT@ zgn5`;`0!+5t57unvm8BAh7$JIdC$Uufzd+O?_KBNV6?Xh0^1|glc$8aOqPv7)ZAsy zaxb+n!XO>lGUYmf8XF8crxnF5wNKePfseqb(R@WX<^de9Gr- zF;Gbn0R499z{GNIpTA6~>|5{s3qBcsxHlTY#WT6yi{ede3t@`okk}z~7NF&HB%O7g z!UqUSOPVO!dBZ$$>bTys8N)_tphV7Sc#wMP6Vzi69ENVIxpx=-pV+C?KdJsV-Bsw`v zK1swwWspmA*Z9EFWKWP6GC`Ns_#eHcaxVx1u^I{xHVABj1c$PX$|lrY3pbkrRZEEg zsTJoyGP4CueSO(#-p50Sd~xexV`x0lBtK4_?M$U<7An!i%Tll=F5Z~O_N#BNEX#a673MO5SlXWKvpP|Fc5$l^_~V`1=*GYd_NE z4dd7WF_&^CDBi2i^Zw+bu>xTie4q8u{**dB!!W5)U#+4*4ZT~7avdoRi$-Z(cGeVP z64wmlpI|WU3Ze$D!se(odKKjYrDL;~Y9a))u2*yY8HD>%x7U;mrJJwu-z_4@SxBHjT?l>$N=f%?>#qB_CR{V%_)+E8}C# zk*))GhrF+?3`ybgF1_jeW+Brh>{!s`bFNVJi;fHX7^iDT-B8q?bq0h4#x`Bi^G|dm z|A$!gO8oG=flsf^QHS{qzNGFnaQEkGb$6!6TJ7B4zuXDlnf3k0$2H$t@*`(2K9+L$ z#P*);>dwSH>Udv09AIIrko^HtV~`>J7Kn-0mKn6f23T z8fEJE-H1D7OJh!5UGuv9mHt!e2XrdCwrSDx4-8+`PU*6+-PxRy%u3mr%!Hv>yg}pcu#Y=Sm8(nY#b^!7c=Gp} zevS+wzK&~jz`B5Eg`!4x5-S5;gL{c6j#X+s!EXBGs~$nVf4R)QUW3JDAm^lV%VVgx z@9O1B*<=8b;_&Daq|gu-iKMEYV=crhE{r8dhaYrJ5w{G&c|fV?TavfmV_@$ymWgEd zkP=~f3sW_Shy&?8E(0|e#4;-={MT4L#$u~c z+!ieJ-*9nv?OjjPv($LFNZ?s7ouzVWO9%qfoZ+xHedd zjGd?nSXmnln0l+AkqfJ)3|Jjaqk%{o7H?bXFA57dj;zF?Orjm@@Tq8G;+lMO2sJ=m zcp?P+@Z18oqb1&mqmGu=lg}&g<7xwp#qn>rAlnh@fH<65rwYK5{EPqWFU`QMJCRx z@MUBHQHWKNvAfF%g_uFwXk14cKgGALaG7_6xEe_h2dzSiQ$`k}@l5wB zj35^)A&uNKGH*YphodTF_`bMtS3EPwhcHi-vvpS32s=@_lvOSTBK>UV&6Fu z#_ucgZty&L8L0>Y8?oGRJ%o)5}m)*t6TBlA^TJoj1&y zeyghbba2Qor<%Omv$E5*eZC9q9SUux-uoWO-?+DTwemyTjxU2scZV0qu7nlM>StJ@ z98spJYvZZZ>Fy+7wJ(h75w>Lf>B2!LYC}3CU;eSEFqUoc-uB9lrf zWq5T;@?VTwv4HW<8o7FCwhgn^ghgC-D)NE${={M5Ec5I%Mc1b7I(x_OM%dlTjh5I& zS7*LEVCKgMPnwn-f4r&LE@9@!r#|@LhtD+qmbHLgd09JGlj(y5(im$Op??Qk!jXjK z7iw#g%@bq44ee1K*2cLtQrMk59gyg2UNH2lE2L8JgY+e2s5h>|i*N;r z0S4f;9x0kj*NM~#MYW4r69ghOxt98K&Q@SqBC%GHj=W^}d^|3bC{4uhk7X*AhX@_2 z8a%#^B(}vWSdqts^8MSf`}0z352J0ymt3eX-IT z`YNtaiK4a)U9wQy#}_JEWco}l%Yt7Rs!{|@<>QNr>WLwc!C83-_{QDY*U1ogy+^6t zAh=)10S71SYfV*qrdM*esg>a6%KEZJMf4R+z;e&Qyk&*>fR;f#x&buq5@|LZZ8Xu57_H?E#%I;nyQ2Zm%C+;QC zM;)vaf&vRO_!rNnAZ_yxQ2`G)3QRgD`-(cPVIS-{EHngTP41Dyn$6*B;qRiL%1M6b z(6c*?(^FOXMCiw1qP+r3Uadpn3T%D}eqO=h0oz(zSqZIqH9L$Zt4AJ<&eqUQDr+h` zo`Z3>gC!x@b0D(1CF$T_3P700SX%2&dectz`2E}mqy6U`eDLLyGLP6~^tXfsR~a!9-lJOJZ4uscVY4;&44-#AnSM_AZsI#X{J2K`?)H?9!)`ifE&FY1{*fTAs2Zw@~?wLs7AS?P4mZ4l=ZiA4)$bE#E$s03-*+BI=NLe0Royj-~CrZCs-L;|voBTLp;KE z`gc0Ehz-j8M*48yRQ zIaBLN9JdALrjkOWo_T{Ql!Rt);oKr+0t4e5mE0l97lW88PUUDcYA&}kn5=9yF=I+r zH2`1W>j|c|kB5`oCg#BvN_sR{828eRLr(T-EVqFyE~9~!*o))*#e76dgbnea=vFkb z5ht`GYN{BSD6wW)BXp4;K!~S%oZ0F5?_AWMiTcKx<)W+uh@sY!JiXNUC?C^BZ$ork zPF4jTNo!s%_+BA`6O}%%b!w-P)LQ1xg7BG_Ehqkl4xp(v;>;hkHoS zt2s0cu~4JT+59n;%xV^Rs`G1EJt4%w+Wgl|sAWW(_2$LXWwwVe{JyXq> z#k{mBTnXGjgSSG!9?e1zqNHPK0OAGE9UzU>*fXJIp*Qz@gqQ3=qf0<18i5gQbRmgg zWyRF&O)k6NZL%3&BkBbYV;hLWp@HQu6&P5Q5f?7_k#pi9SLY$RDoSuDY4RQQLY8Y; z5TD3(B6bjL8*k7qh-Y&3UrEPV2Rh7&I#c2<(~_~q0Q*AOxQufvcYX57rZ0Z3cy>Fl z?D@EIt72&YUA9Bvfg83QjRYg-hNk)@@5iOx@+=6S+|m# z1J7>Cse%?{3kNB8OCcaYh#hRJZuZ+Uw4del+y%QMtgmNhhkuuo-0S}6E6W#k%ZbP> znmTIx*p5NL(KT0J6eo}A-KI?&#XMQG`AX^SEBe``cPu&OdG}&`bDFSykKYN2uJ%84 zd82&q$4%?%0Ryjpp6y0QqQ8q@vGU_j@!R}E#i2VB3Jjn9GG$Mn@5gLEzP{TQ)$t$C z$A36{X7jwM_oqFW(&v}_6+2hdU0fFY(fLt7PhHo^_U5DyM!(%+m|t+1seG|Vli8y@ zsFkPC`KBc^y4SqxOTz6TGj;h>mt_S$3Q8&2dOhunq7VH;2fdd+Aos%ZDUk&WngmPV zyZ_mdTREvM&et?uQPjsg%)Fw;`AL@V`GaVverQXD#x8#r7169q{#2O2kC+Sb<*U0& zC6K^zLPo~k6;pM5sr(48DGYu4;896nYZ5w$7c0jaPzhg)BmC7~Th{!nZ1W+jeOlF)wVVAHFFz*g|)iL}Z^+cb;7 z>b4PkLem8qSQin5_$G)?g`0MaH(Sc|=6D*4fEgWD9x2$72_rVqYW)rvfkA{M~u;WUcTS{tJ{6c`t* z^T=wv-A!rSEfr3N5$!VxZmvDSnNb6l{1CGF@eP|tPJ|!{pAxSdf5f6g<63ATk7#fT zyB9yd1L?*tIK^{IN z1nQh?j74J4BD3N!JmANcZuBJ&V_9MVyXs2631)G-8)VE*5wP*t671 zQeEqAcaiK}>7XlQBXX}U^DaKzS{|ept&S8GhT_5~BC=cWHVBW=+k}W$QzS$%4DFw& z(ScyQM1y34nDDiOhQ$DcP=wZcIXo4}#IF7Zr?=Y0V6!xhI?3^Y_eE99o7fk>^y%4* zaF67Kt8;#KUf2hLnPaLt{22QvDZZMRJXP$z5sTh#Q0D-Ejq*TgPLtDW!#AstY zBT9x8XFQ>*#U1c07s*2&BLqgIAe`WIflVftj@Xx#d76#7NSc)8^~Bc`lNT^BO2LhE zKF}e=8Nh5s^`gC8%q7e0hw!)%LgCR6gkFdck-od5&q17 zM0}+%mt2D47EJjn3o0*cam^vF$Wi5Jb%QiLmOFCH;`dt|1bjOuidvY8sEe z8UQCiJmZmdA}z+myl;J#-N!NZemIl0hEGCkFx5%1-mE0Kc} z04Op}IaG;eb5uy_;4qoIgNW!r1v$asWs6ZToo9NjKd7DZfsnC5NGCr=!wrUKMvj1| zM}#$BQgksnMK^C1NruJ=45fq`Uk37$Fac7MR;RkHN1)yux;~?%^g${4$~;7+Cl!;& zsdAlYyg-1`C!}XOSt2g!GOUe=!DNk~Vi}54#D&pJm0?gsEz`nm1)kZ&Cy=e6LoxLulp4oR}`_R74 zBMj3Pc{U7dw(!KlV>{2BD9sBC9X@YyVCOmdW*m4E1odckZdSvdY&c;91>e$7=$W-pwUa5}Q0%kY`0>V!!L zx+e~*A980|{?uoSr+#px&D4l@bKZM9rnukt#j*(5eBr^!9#x&bT(kBdGkkB=qQTOtjs{U$Ll^9C6_7xLr~|+p0T?EeGyf)bgXl z!)?Ni->U;u+Yh`bl2ttWY4OVA)yIyF*(6ELSyG}49gLI~j#s>!u6k;68m7mUb zs6P|1%TTzF_Z_R{Oo&)uZ#?yT5DGf=xL;=lrJmDBPG(@kYd) zMK@o(&rBE*JYh>N+Ss=a8Pl`tk|{#)MrWrk&l1Dw7SoL-c* z@QXbP1>sVFhlohcsyx%OF>=W2{%EZi0doP&IqXtps5j7wVggq(er7yToHDNS&I zs&N~DP$Q&EpJQB4EL)fbrKt3N595c){%8tU!Qgby(RZ3@kd4xz(fg!OY2Qq5-t1T} zXAROYvNG5vrCeLj3<~|l<8(mH@NO!v13`I}G{2>i(({B_Kv#3cuO32t6Xlj9EBOGv z{3;^5MT%p|8i1Y2Fdf*?)v4z^^%{!x(VGBFQ8uc9pE9oFQDmkS2+RVHJ)W^pUegIZ z8#)8cL-ulwH4*$`Hd!PP7Sd}lB+!-s`?6VUfQB~HG9Ly_48~8x=s1DCa3C@q>rp@_pw6dX`CNK- z==j#jh9RdH%vCzNOFQ3gKWTEn9Ba+sw(pITbemS3oH#jU>8x4h{yNRY-HUhf(>j$q z4-ICjL!6&<4Bl^0FWBY(+kooTz0o3odDC-?eXIz(^ci$*w&J0*a!$>#=PgjwvXoG| zgh&S0D@dv53hBiA30;mp5u|GEEId9U%)lsd8lBQ+r)2aLr%e%gm~>-fo;C=(jik>I z?#-xlGI=H$aP?8ZhH}hiIZN7cMj?yikw63x)0p&`SuH4Ou10JkgGf}>5>DTeHjcq# z6z6%pN&EQK(1U z0$+?kzuoOiysiuiQc1(3Vo?p%AfFvB41xM$e^@3U1H#FCGz4r zM2g9R!(3j#8vIFJ0wHl$w-1{(c;|?Lk8&;p(oHM6wqfM#oUIzua1Mbh;|(+f@W|*j z!FVNk;^dp+TsmP1R~AsI2hO$LEK^;1IhStyKf#ehtMDn@*!MCD>3b@Z7?XatFbW^cZ-K5ES@nU2ZA3*m7;)g z>vlM=XL8TxtS+;*Omkb31(N)C3v@Xjewj$6UBEB>^8<2am%1V7{sb!)= zt@Ba?fEz0W?Z?LH3p|+OGSFR#okyMdj!aU~qRwz8b8xjZ(_-BA>oxuvTTk4qh#b&R({%WBMb3lU?`@L*oK*T% z@JHkPmfd`E>)JcPzkYO3xO-^y;q9dhJMUcB>(kfPXk2{I4j+^b9I*;Sctxzxg~DK< z&K!l+pg|8}l7)iIN=$(?;vG2%ujr9DH_aUi>4p>*gdjEfOek>?x&Vnlsg!i_)VlO0 z@=FRDxD8^>U158XUom_xURO_eltI#2Ph+R|Vcq6{=+fhemz6@CrZ}-rPoR{45N~{w_WOp0c>XBGZf;`y4#&`x-4fhY6WsnoqunrHd z>t}1%iAn?$8sK@zXAZ@}TrbckP{-7)#2TrQrQ#ghWOj;`ovlbRtVMYTHN|Lae2(gq z)(%aax+IWmMqy`#M{mldQ98RHCrL(hoYo-MG^QbOk<}THA!cZ^A_S2$3F08VUIvBf zD~6OUjDe$u)K%Q`8MgGAC#;l6w>;FIE%vohvpCv2_*K2~g^$icsDP$pX_eDgntFk6 zV5_}YOW_le%nt`jg@`>2WO7iuGgFB|!upqC8xW76A+oDwOk3oHylj$awMr2UvytmU z4W<$CT^W_~zAn3~Na08#N?K;Kdx{`TiDj5(6bAZ3SvZK%F3f8% zc@mERsl>g^GZ~0`ujm{?4NCyZgtNUklI~p3vp)~EB8lzkTa#(=6BjmnY}&yn{MXUWYz@6#o>NN-+T|F&<)`=gtWe_Q{P5cMQ|X|F+v$L@wb=2y;8wBl|Z zJ;L6(&pif?McG%SE*yJA_`gLZVS+#YgKqtsxFmtpf*i}j?|NPGxF8<$UhSP5 zUPqioEQVZ-5U0u#M3~ql*drHjRuTh66moO@BLGDr_fI?s!56RiQt)0CTxeu<2wmaM z!%6Ikh!L0&&6O%7;Wfeta&@zPwSEW&=?Q5;ivzF)=BCz~rxT09UxEFSdQ@) z4ndwsHndqj3hG~Ii`Y9Mt}DPtCq}Eq?j=^fpsc`E%ihu`>26WkX9WLIhYXTnI$UO% z+*D{fEf3nyI5t}-*QCPewLT#=qGAjnBaYRJXa<$Qw?mee=B3l(;2dR^)6{T=K-rm$ z0?Q%y-3ap65A7ppvi49W0V0X2QnPolH=IOV3JDeJO`HOFQJVYF5yw!>KHy5T>T&c< ziJ19GID*J#0g9l+``-qDP%$wwqfk;-=Ie;mFjAHH(mXG#sn_Juhoty(PzBym8h2h!M$R*LClat52(=}zAY`)iAKTCI!r&|%iUz1(n=5(2<1Hy zpkZCig(Qf`OGsKs2bT6tATh%@wlj<~y16Q@Y`;L{k=dbi+@rcjbqu1pmB5Prf2<`J zR;UvAXc`b{isJWTVYJZ;ZA%3HH6nuAu@t8V$bcFfSWiww0STSwQfmF060*&ZsoLQW zHxLyfo9I&#(HzS4)T>i<= z-)(ueB&zG#JI$7qej*uc=F`pyKa`FMyZia@o#S8gCfBMehMjmm@3(!y`LpG<2iWYg zp_drIQ1(Q7FE$K~Yv;`h9Ub>SX`;XV;gA2qhnmS&$#H-c?tkOlW107jC*P4<#DC!a z=+jP3FW4@P@4LDGFQ&;M7u8e!wtY7+qT$v^^ZRQO@`@Y!U#jeMY4pwRAM|@K;n>PY z+`vb1vN&H&hiQpN*7tOe2(JI2a=^1Q(=X@E`kEbApqziGP5tZto~Mv@?Q5?bf8Ajy zKCt_K$J6m^eCJq4*5)qB$V&(cP8#etAS5qk_y<$FPW+?EJJ-MO`LC#7T^FTozI)pu z`QX!>qvig`9!|e}FSO{=oNdE>wVosEI*mMXVp>hX*dcq8zh_Qu87_Pk^sfnuZ5?0J zqu=^dn%c$?Nc71?&VV{)M(jt0=aB4*pufo&YhU zsT5HbW`rB`Vq^$JUrmYn_y3#P++uJWZa*=6F`UY#8Uw{!ijvBKXCe^=Y^~{%VMdhW~E%}OK-h8 z-hocXkwQE4i?izP%|asBOC*fmt;zF7u#A)%bNo$#)dO5WdKBOwa)`jNbfO4Knezi0 z!i0GPC27zwUz9%S{5Hozl#Lv-`^e6K&*7fUG8%$XG~non9~^(#V{y^18cbUgD! zVytD4@kDWCfM?C83ZFWSEnR8{qL z)s(0YHvQVG+l{J{3uA@pR|9T6+rDSksDZYJH?sX_ySSChHow-(`fhfIL&dA!7cVlUq1g+4+mZGm*#H zh<153(|42>U;1vjbgP(L(heQh_VT?)*V|lde!S~@jFJ6pnPkuNo3a0mdNPw^Ym~Xv z{`^Cn9q_k2{@>nkT<_^6amo&8FE3?(pML6-R+m@JpFHQX@9kNAzWcb%%6>dbrDQR-Fj9KHN?hLuGIogQ=RbFZ< z!kGI-rkwVKTG2XIf-eDXpk**&g~yGGc{N z1=jT>0P62YB*7uhnkp#kK82o3|H97Zp>LOk9spoj#XFp8HX)h@J6R^gBGdzKPec)p zj7O+V4Eos+tPWDbZN~YB7C}NH@MhUDXfI;24 zsF@sGyk`M9^V7(}Nj)qLj*ybAaYS5_{3pbvDEk~nMI&ON)`*aKBB3VKSD0z{3c#g| z%IA&U{&iNh@kOv(BX$YlEgn5eWoh-19ftcBKzGTF!?L!o<@CN-)M`jKAajG13jDGH zQ4#bzu?G>QZGpIq7FCZb5+*h~xiM2O7Ugj!qWiDld_}Si3Pd5eZ zTKMg#vQ7OLcHIS}XRB6YhorsJ);O=LW9ane7#Ln*!di>;cPsEtEnDgMl)%|v0iBDCR zd-4C9N+-lsO3st8522aHmf!y<@mB2A59zUJW!RmPj8&PngS_|8uPS|{tF89B3NK z_B39eQP74e9bj~V)*7SZh&~+CJ`534;xdO4{8>$N5Gm$dUJv{^zF05OctDcqO(i2= z#U&ZMSIV-y5j56@x9Mn5D+ZF=9!lP?a_BG~fu(aYjTmCBj~hfdkgEnOdm{8>>3b@@ zuRvBq$x}(-4O(9b^b_?T0V*)oJ3M5|r_tCk92^rzQ$Ho7M`=fgU0jR zM0nfOKsMVG*@D23#v&1|168_+4ww1h(P>6F_N|e(OQ1Cx9H1QWWC2ak7da6APh-6) zTk0=lCHT5IP{>NQj2Ln>6v#g!~vob-@>i%FvY5rw1KBt&20 z+XWI@LsbG|Fc9xFVqL;xijglh3{0eEzrq6ti8^H^d^=VQt0Ap$*7r$~SRP)qN@)F^ z=U91-zj>qZO`P}gqpL@fKd+7oZ?I0>HvQt&qV5|atJaSQ zd%AwY_QJ}!dxsjszHu$sx8MS2iDym(Kb`E57x=}stA4Lz-SIogyH{Kte~tT^`P{?p ze(E&lbW#`ETSs-ansJVQv+(}UKm4Bn&;R+@WJ$eRm^Fp_T~-z@|9rmTB>O0#Qfla6 zK6HNh*cQDj79Twl@6ON9-?`)DkA3FPn|JPPaPv{Mn%BQqF#Rud3tS%mZe6BrW$3m3 zTZC@@ZHHAp*DunsAB}i3>0d<^57Ux&{HuxU-@h@+L(YJvPNr{W=%YR>hqu_4GxxKG z0nxvwbib_Xu;Z34@6OmzMb3oZ8}cs>xOm}|WZd-86I%!Oi8%HA#gw(dsrNql=7Uka zMhvsQ=oGc!ks<2H55s(N61sQ}dSllx%)B8C^6rIR znTt-Mr9ADfgz_g;dPP%iBDq_g!OI6Ki0G0fLmD;W>d(32&{VEmtc#M_dU&}?YRZ7z zrAY=;OwIAOdVt+Q z!osyUlDH?V19^`@r*$k{M=ru_DsyOT6$$DdBCLw8QYD#6rCn7k&{DkFoCM?F2&<*D z*EmH597Z2%_@J&Sj>X1Rgzp7dv#Lfwp#rkowESfeK`g3qboIFz;B}o_?=E}ACHPWy zrqx?!bapY5C(y#qfB(_s_fnd`DWa8~e^1^FMe=6(f08%%Ab&SU)H3Gk64nt}fmF-+ zlT3l|Pe39VmS+XXolIKRxdE}uN+d6g6a}6J5dirnZM5A49LhQ|#tDP2(i;>{G)gO+ z-x|ysrh@8`2XBWC3^563#U%7*LC%{Y6*|#W#g(RY&?yWyM;RQ(KI}z%8kGX(D{R@I zOI{qvQ$e3FjwWbC1P)&$4`wC`e$@HJsUcA6HP;d8nU710b}1`k=@S&rHVzLr9>864 zEnJbW9XpVmq_T;bjCC@VPT)bw2lZ}*)e#`1srax<(DYF1q6C#Dd1Q?!Vorh6+`==7 zL+M9kc9bX)N}|dlOFR~|MHs;s>b)Dt$`PhTr3k46O;KQD7oaSNAmr*k1xSv3QvWpD zL67h>@{!ybWCO%r-<%R%*Elh(Jf3UBseu!sZ9S>?xGe|UQHfVGbLg8cWBHCSZA&tElkSiP`( z&B~iaF>gNIwSB0S-}~dDMIYV%_|Wl$;~9tdEL`($eCp;ko4-B3uvrVk!;wjtq~40T zktx5@MjPyI`MW#$Uf(w^44)p9xhZJ=-Tkk}^|tyI4rx6FTulAMVxbu>U)6H5t@o(BxzBm#?b-(Y%cMo4EbIfS&&&Wyv3AG2D&47&Wv1!2HZb z?62IYYF)>eM=_fMx!Zx=KibfC-}knNX)BK0T)AEo-2T|W<`;S;elh##gU)ZJzBRV% z`Ek3ZBup=lb89v(u}fSz?AOYhM>cs+Kl3sT8Nr^CixUK^IxKHkXXb2x@tP3)(0XFN z8?!J{TOVY?z!%AYh=IL`n;1(Hd`W=9iyAe~27Yj=Uxfrn_C^Fif z1){RXTf(!=TG6HU_#G_09DX=4&upU_B zsz+gg^aSWxdRPjPe+-@%U1QZ?%3M z0)de6Ayf^dvw%GpKop1zg#d>YLAj)WZ~$XgaRfb6P$sS2s&ekr4`eMJ8tg)YTVEVm z)5E>xGM9_iP9$WB(I_bL9Qa2Qqo6))Z_~h<%8Jqlm82a}I5%FH57)lORIjAdKS{}d zbGL-uUAziLN;=}{g<#}gk{Btjas^u+?Ak1_XiX=8GjXpcJRfl)hwl=L(lm>`zZtJZNBnTP}`KzlQb{7bZ=5LM&m#`EBNz4N&ys{Xb3IAvk(3rQ&1jWrV zTF4Z2EEF$jOc-EFMU~Rojx~s;uO2<46y%D!B*duUh?g_iFo@_(G}3vE3N8x`xrKD1 zZ9#=0sF%gVR#Tv24Zb^-6uf4U%R`*P4FelbOT$t5k$4YU;E;#AymIxWYQe9uI!t0i z!8`qa>AjW+K|;)hb9nqJB&ukP5}-LXQA`;``GOWhEMEC8UhM4RQP_)@Yuq$s$)$7Y zNRIx|BnZb0Xy7}-$1Bab+|~|0hNRI?`Asr^%eFUzzB;++b)WgwS4VEKx3rZ+UA#YK zbVAXPhz&pIzx!HD*YJ0~+CF96d*kCHi~VhPMyvYn-PYN2yRK=)8eaBRBHDzsu9+VB z_!{Db+f{qm4-uG@PL-}h3~2QZC$~oSi0k;pkH0>=_hjoc^{%?phm#I#ZPWf}a(i-K zaB4tl*^EwcZT18oOX#&|d7nGO6iG=(gBLuR_DT2Z)Zz&H`LNmTTd&O=bL0ob1?|I! zPV1+IkA|rqXD^P(*fhwwqe23?eC~dZE#yJwKPSpdiL$^k{rQf6!fF1Gq#YHcH4WWd zT(TTy zL~K}z3QAFk)X*a$1VlsuX#pZcdJQf8`aAE9yWh^v%(icT-#@!UOm2P8^PcjY=QJoT zTCr?4ZLVH;aCjtt^Ruvn>lH63UN!K3jXk9IwsPr(l*T0uZDT7LMXrubQ_^#uNya~4 zl%3((7M-@aHL|_!d4T4Tx<`74my6O4#;qt*cil3xqt-WaE%to{!tmeTK&>KNZS#SX(z@gLx+0hV?wSU!0B>9 zy&Ci1G|K}B)4c$F1J{Fmn-&`S^xLJWXjR(l^_3HQ)URDil8ATvtpAm@nX z;r0M7zYV_JwvF{t9dIXO` z{u&{_372gSf4B;pa>S6VgnvU=?2f{x)vySO1pf_4OHRTDUK^n04AZDVhioX(Sqr;A z$U9oM3Q@+z<}A66HB<&)jzXtRoeCZuU0W5eHz! z>^LX3g|-rXwD4Jju*lG(zGvfAk46eb_Azg*Bm}7iT!m-#q7f;_DL% zu#H(h__oq&d{!v8fF;`1!DxK&`J!@-$CEF;?ujS(q9xrOdh3#Q_s^drnEr`TrM)X> zY@&p8vS7}NZQ*A33li@-Px$rui!i@)x3Lhf^v-#w?N&j)VvJ5dt#`WWk;3#PU#6Cx zQk!glrH~obPny#xq8rAptfYp8{uL%+ef<_U|L}t!f5O`Q9hjmIz5>5+6{(S1LHYQI zH=?oC=W|NUw8Qn6H?_8O6-Gw{N2dwmqN4UMcoF&V;SBp@Rg#Buq-5PqQJO_2v!AF* zK3M4<(ye4ZNVfi-y7m5e73><89qDAz9yBZ{kZG2tRZ_BT{~5L>_gxNbKWqA?iw1h* zx_qB>&}f-aEIkY6V64eeH;T2RUMC|xxo+pQuH_=VX$|`{=eWNtI2^w_-eixF_4eKp z%bjLZjP-9BX|6SQt5{~ce#+O33r}4m)k>wj3(D)Wi+3~@B_`i4bkJ+PJ5EV7QZ(VF zcect1N-2o^DhU|We!5h}9jZ*gW&$IW>v(f5Akc;wf&jEQ7P;P0v56}$xkE!apF*U> zyM?u}5E&krMMtX~f6JGV-#b%@geV3RScPcOaiQJ=Zig886ShoX<>W%B3%&Ws5CCg^ z1_(#z84mw#-Y&$$pu_;n)&YBg2swzgkG>VahwgP`z5qQFK>A<4jMI@RWYOE5a#`Pf z;oT3ULR%&n2EsxH@R|@_$|FA*GXQq^^rs(%Rls7MD@9kwcmeXQhmc=$80{xqXjl5# zstnGhAGG-Q5lvCuvTod%;2}_WpmZ+XA{~QHf|}heQL{TLySoEiiUceuIQ?n%(^#JU zOea{H7$Hc~^(o?iGM|1+K^LDTZ|$VYsM#7)5HK1*bJ`$8C9-MADTf&#eEcy^B}(7z zKzSh54-6&3(>ylF>a`MR2+p{_L@8eifd%mz-h+f8B;exU_ppURA{DoEX9Z&h9(An1_vil9X9S@63qOSvo#Fq z0$ZFN z;S=v_Szv$mZlXucQI)+$YQfPFPuZV$losu=rdV6TP}iMbN-V;P_w2FI4+zc+u&KQm zsZR4$U$EFrq3y%#j>v#*j}=yI=~eNWiroz9Jrpi9h(D2K?j6W^W7gaJre}q*|Jx&W zTWIXgyZ0~iB00Mqrr4M%Kk-X#Q6b;hdwJsL(zv|0d&W7J8+mg+M!4L4y_hSjcve7a zxvmchZ@;(aLc6zaeViT_TQxG&b%ZDndrH3KB+ZwsajG(@)Oe=zhZy%eGUjhSp#1m; zw9Vgq^REYwp-LA_5*g<9*}abT-O)dSvq@xKw${zOp;CFzV*5RHwf6o&r&0$$-h6*? zYgbP79em51i8m}NjK1fs$hW;zawFB~{->%nZ!$0eMeQK{ExY)81mDx!Hfe01YQD}I zeUHgLE_S36WfwaAVMX!u5n;{i)z2EK-z=Jyvv@JTaPrkJ1(UDls_Lp8oMAKl*Y(pB zY0es-QrZ?h+hsI*nQpIvofL}I);?I2*w?2!dH|;NlIuKp@<4`CAsvOpp-^aMgG2V6 zkFyEW;(|ftv0h}|BQS^64#l28jL0c&cs~n^1r=ktWkCk=r|w?2fcpqHyomOob~uC9 zfS4e_p$N*}cPY34@|t>g3=m0Z$Oh7&R0+|K%&ZvYzF_-*50xmy5<&KX;;4u~pnaqB zLyC#0*4tn-$iA^axR`}H{&Lws1o8C^Ayd$B^~?c4Z9D}^3QXcR4QrTWK8wh9LaKi< z7#`uog3t0E_&pd6j*t#cNhS?C*HKymV~FJS5YJ}fVd(N&`++ls*C5<D-?veQ*bBVAwAJf;9~}mXPJc-_r#w zHsQ>p%x7LFFeTA_QEtPAQYSC?0*~uFlAs{um$^Jlz?JiZfQPR}CyEf=e4GjHcnmy# z0%(*3v1AZ41n0}w25=$tv_n5U0|t5>fE3m=5FGJs=Z3%q90JHg0Fnkf5DXLC%jDI8 z{C73v|01N8Ftx?U3)iL!@{kZX@&y~9ZdK`o{u?~mpNd031A_<9Pn4{o-AYITF)m`W zoB-VP9uQ?BvaK|bGR~3`$@s!pHmH5mTjX+v&^dk&zaq6JlrX&LC=)I-#>3=mB@4RE z<)i^XDjz&4g?Kjb$QaO6MIbD^O$a2&JOTzmpcR0dLGZE!(tvNhkmiq&-?R@lz(Bh* zk?tbmAcchC)^Udwb}aeGKChr~YaedV&KP2`zFbJ|q0_&6*Xo)j8M=D2swd{uOnH-g zzs2xz?V9MbddyjSCR^~*w|Uqt8djQHmGn8q+hB6k*hg+^f)!B(TPE@jhfis5&M&I~HJj_4FvTk@1Ct$UVUXGjI?))I*N^`OnI~e;U1>ZZ+{9$_nCvkZm z$6aIRVtY#nvZrlUq>s5D8DiUZaeBrbSL67Ps-xm3mTc93^f9~KAQU$*n|_UUAOFS2 zq~6eud3DN=zD+r=-q$WJWnB*d1b?Z>;KK}~7?)zEgvuU3lgHb;wziQ`zqA8e85th8 zLkSp(Cc-*`Jps)td|(qJMs)?&VaDQl6KXUS5XZF36d}93T?v6lZZ`-k4=~_15ZMl7 z>PgUu{Oixki;xRlc2m(2_QHm2y$`GdBN!R(LNEpJr+kP_71q5M=wXVj2IVL7W${GJ z&qSEp-C7J;QFEdOf`aSMq_)jdfp=zz{BhDF=p1Ir1&Q4e=s{y(?#QSVf2Pj{9AU<-%!n${-l}{UEQceO#-W3sz?7bs49h5 zz($I3ESS*4l1H2rUO(bMXZoV&4gMCF1Xk(UjIPH89OgsCEk_(Ayj9$oZupy3)W z^9F~Avnyd)WMCjNEYDE5zMYoIAhr$|!ZJ-tFP8Wk%aHF3GclARD&!Y~_-V`%v~fTz z4<+y{DT#m-W&^iAn?$@NmHYmr9;07e2^1%$ys?UnuOb7%lYrD75Tk)tMTvq(O(aj!$-QInjjkSPF@b%|rh8=% zZ_hCm$~b)PbLO}iL7uuH#>bSBy_QbfeWCukzZQ!j(m$x# zj?Z;7tUp$8=)~Mx(HJegRCkYhVba-!!&liW?mKp>k>6R}d`z-sWZs@-cXk$0R`k+W z#J2w$m*MHSU=3(8DfE#_NLSBEjXsVneBd_pSdq^$dc$?E^U`5r&xN>&@&di`Z;;UA z0h9siH;=iI$inxzR_z+X4ggLVhk!FoaLef!393QnOLh3>2ifm7=y4IB6ZzO z>P{t2fSS?|n-e7x7i_9Bmg!55kQWvjbip{e{MF>%rRXkT*-pZQ6@IKv;7LKIbpnApM&SFJgVRNj`e09~%Y}gy^wt6N z0APs5c|$ru33L~c=tZDJW&gA0@#-R0XEKZw327_h;Xw6@A>k1w4j{)D%c$~m`Hwt)9phYATSHwZ$DGrS%g+nI;ao9Z+(fnO}p5t2GoE$p(P)Vdq!)3_04As zVz?;5k<;}FULWAr$T%Bm*p<9SGJbi73Pg8hGtOaVW6^ z%M?pNk!cL6op8m#`QqX4-lCg~!^zz`@C%|K1`3rF(U=o>llM1Kc7g%+eOAO%y`e64 zKNO1afR8#S-R{jyB2!u--yPDNRNC_T^)}(52_dVUkLuen>_ZyW{Y23uVV|#2anz&` zUFYl`!MJzi@`kIJQrI$l>3X3@Xt%#B=0r0J`ZqIX2%moQlYhn|{B5B(6PY7g(}9+CU(Rd}T9ysc>y zN5{Vzwsvd@r%<^kb^p!_!<>d4QH^f7rN*9n<;I0!s>76j^|kT-!g?~T*Nux6IwxuB zR8Z^^yb|iUhnuPmlejClEU{u8Y&uo%nW~o%_iAFOn#qH(<))RMttNrmL04Dgf4y0r zJC;*;fIWV|aqfeQT?^KRoIfPB?;Rjrl3ty^sA=5g!PK#X-=1XBs&~-e`PyER`RlGa z2}MFFz?k{rP(K4N+FK^6RMsPih2V?>+a;wHOrM0ZS9m51MgkDb3@|Ti*m_AuL|kAk zW5OP{16D5;z5ELQ0g^eJWDbr3+A7_Phk`m5m>`M;ZIx-TvMUL*g!~KO5L$+>wd`b= z2EIsUg5D2oprk>Pxtv=7XDov{g+$JV!#XgIjPOKQAhAn>S!l2dW78p31t$wYUXqVz zvkY7iPx;W+3JI4CZLw^*a!IrF98b)l%M}Ab-Uo|$%YytjT%#Mbg@9U>7cApgEtvQK zwarK0x~Gfl2s8?5ZY%lVZzimjDnsd(ZFuUmN>(e0bnpl_4rgd z^BuZ!q&-iOB18nZjy#R8q9PRDp0O zO;An@nsl|d?t}GX^_LA{AFKlw!4JqV!!IFW8)9=Ll3F#sy0hg1NfeCqgb{I1_QVt@L< z=R-BM+U1lvdQ5K@#@W--y|VTtx!J``rd!!Z_QJ3NyT)6ZSJeYfotyI-X8PPM>-qY* zyrf{9&G6F`c3TuE^Eb80l0FW)PdLEYyvs#<*f~<)gp1=xW=FQB9uDxRn{jiM>4Np& zOeiatHp!$=H6)Y!N^ zulIcu#b9Hwn<81Jg$}T-Fp$4ieV?hQCy-u8{1s}HAzEBOrV{rR$dhK}TslM2PKrSu z8P6Ac!Q#l4{0ut>VLyj15yDIkz+!_1mo*oyv2Ll^4~6gW5zMYZ&;qO6wg$%_T>42P z<=qBLgRdhH1W}hF76Ud=w9VUaWxiyNsv*l9?AaBjxFENRh%X?2;|cf}0W)IJ_aNm3 z@hYFGM!*>Kp#q6Z3E)c^oiBZ#4~##_LznzzC=DDR@Ou!Z;ThJTzs8iaff>kCT+ zQB^p+5(CodV9UtrDYPQsmf?%gy%8jro8%HfQ6N^#Y~}Jvpr-@z^}iqjncP{cuOt*E z0DRZnH7C3`9F5&6{E2!(^DTuGSsTv}hM&t7%R!4$32xmB;kp<880{CaYo;|r8j(k& z2vSiJTbYl`2_or$*X{5Vj38v%SOccx=e5s4cmgu8;adyDc$}c z$iyH3Epq@a01{*9$uroX5yz14E$(>rH%P1g^vbhrUp!mSRc1_*!&AbgI z%byNar{8S%g{2+>%oACT_d%by-h`%?-1m;O;H!7`e@bc-4YVJUzzGF)W^27jgcZ!S=8CTZ1ur{{ayG;ZIoqGLP?10n}xxyXDpa_x#Y< zx+hw-YnLij8XT`&bMB2-g#Gb3Cl@Y?{C?!&=zw$e9jTW7X<9$M);|YF7c>qWhF-#&ym?tR1@?+(i1lrhE28Z%iodb#<(r`$|K#m(3gDr6B@T8cZGGbX%$#U8s3#m1M@erVh=8{R} z1r5Nf0W|UzxhZMDQEl!6Mjf_|@HcV53@8c^DY@7zfH@_|YomTI98<=w5yd_b$*o4) ze)|O+NYoONXFDatRvZ{)J^)2XMKMi)(%|lp(t)V~@>($}6Z}ODTzf8U50$4jjhA@W)(4MXtOEe}&{DIB`rMOwDi)Vq;C%0-C7D)#LbkXGn+u;Ku z!h^Bl1Eahim-8>hPQ|5thvdpv5YgJ<5}CZE(jU2QxiL`vB$`Pm9gqO?0Cx&K@(e?; zQ3pG$hed2x*iI@y{a*ySrKf-qswC#3TxM}>CoT|zPfnz&z#XlCl1l_Say}HnxkCsn zf&on83Tcl4Y%uj09EdFw5b0NUsSjiYuC0drAn~37!%>o;<1|&SY~zl<<3Z?6C!`|~ ze`qz4RCC2d)4^RQl8f%Za1;Oq1f3Ba$N(q;HxY=<0{I8?9y|hk{aRP(IycT@$wyZJ z5gM|=_C7@OEWYdeM;RJ5d5V|+P|%=%r+y_BCMaF+QvHgLtNx*|EME9Bfa&p?;-0AI`)Ho| zPV-wF8}s2u7f%^F$J%IbS*pIYWszos((n}}y9#$sG1dO)UFwvfo6LOebwXdC`7QW$hE>J(L+H;*5QQ)H()!@6~Jcacp#6CE8XH>5l*rK*&XV~4Lo8DbgzGyJAy?LRu z5%7Xxhb=wbWSyS2YjO8c>Do_6_m{5j@7$l7wt}g3YqBsitTKK>Z{bZ&LZQW!)k~dP zf;6u^IB7q1=F5mvRrGtQ(JJ+O%bS9`W}oTxbXwHcw@4HaP_mqxde$r>^Xq-B!ydF% zBGQU1|H2CcdLr6D0n|59{5QC?Wg!eKT@7|j8X%ky7GNR+7AK_#`47NW5@Y#USqKDy z6#`9W-3QSkh4o!ZWcp*XSlgH4Ni z*2xC=gE*PcVEG~qLi;)e`uP!HLS%!4z%Cqe3Oj=YJ1kQ^xht@j4`pIWO)=XYcz$y zP$ic5lK~uR)Xq&M^1WS#VSR^zTWOBoWFO2zs(^MFbo4F|RfCCZ`~f01M=Qge{oTjV z4=o1xBcBE{>j^YLuVr#;B8`fYvO#GTtJZ6Z?2zZ zBa#%~v6@dgY4kp2?@Hz*RXd!y8gn~EYU&Xul4dFn`FdNT-oj=eXS)tr9NH(45&kbf zVEy=aICcLRYE4BQ+p#NRVqB!VC7eSJ2s6pe9Bjh`E}&%fS^Q8+!-WyL(Ovd z1Mbuh)QdvpmmMwlXTDlnX)|fvigQJ+r5?hlqU|P59aS13bMDmnoZNWmmR0@}?n1w7 zck`p4Z@t#?BGjsRSVm8Wj^!BlY|4-WqM_esl@?@eI?qlQEV@5X=WuPGFwyR+C?XQ4 zh1^@Ft%H(bb^|PsI>}cV0wOU)?@tU`#SDlIDKcuV4Av%CBSf04pDi6&M$Hd}^&+uc z?t|btLmiZ8%F99%Db&D}kR9Oy&{M#Oh$%hpbxFpO0V?bkn61Xp+XaPtAaD;bKGDA(~h?NsggqI8h7y;vbL1dD!OqkFC znJ$8Q0VTF=6e-5DBv^agc4xd7Cg7pVB1UtJ1`!2TALOfvIx7P%$50?pmJo#FzMX&H z3~bz``Ily3P8vq;ZYTnD`n3I3s9cAJ_U`X>y&i)83ff)uZ9b~vII0ZPZb^`=Z z!)bAFk61Cp>@tDW0tkGPpS`&4hd_QS1uiIps3=e%M#RdQginYhe2_J?H4MTg0*wtU z0(uf)f>1jVCqj6Sp0a$FE$dwk#w6GOoGQVBa)ytbJPz)vxgdxfDfL0m8Sv-E&xhOw zuNC6eqV8fMx#tc`!v`nae)N-wX)H-Sq4~!Gy0Kg*gLlhZg0*7A&;?saS2D@p3?Cm* zLeM7mIR~TRBYCJPMJk3vK^P5hTn)WtuDDJL8e)_I!hK9hC3n-5t%-r%EJKL1g)$SV zB{7G)JcsnbPBhfrzj%MLz*%s$Mr8tj$<~Lb(tNVD)OY*bu30s*U~yUPe*Z!X^Qk)2 zvYaDpAI&jaLf-Ay@iaftbg^_s93X7l@Zo z*9VneRi2SmyuMG@aGy5GNQp*QPTSVN*!xY7!fQUz+4ZK~CprAHLnq68UfZjqK_lB& zKB#$d($g{dpHnbKWvq!@N{tDB&<5Gn)3g?Eb)4LVZ zS)X)mHuI{w<}yWbia1o`T8qPANW^~))P4huKmKhJTsL}KXp=!3aVD&Y-+d5O+y@T& zrIt?G&D)OVx3Hma(%lcbUtSkg*d2TIa?9!pid*NolczNM9_hV&e#%sXGN^LypvDE9 zs~B>xbZgljvz-=}v(Gl`8iWRFRaJF*EPlM-(4;7&nXh#J=@6B^duo|Vu7`iIc^sTg zspzn4e@hPxdiE@@zsfo%R_9oKrO$;V!H9x7j=9!;zuH+Qt__QNX3-p*PN<)-ciR7W z^{&uIb8awRJlLACD=(H+TEmzeS2T0m*bC1O?N}c*SK`fZrdNl-T_WwNCO&<}x3jSoJFm}`O7DYzowu`uM} znE)sZIgfmhiW4wLx>@18VQ9@;c_`H_3^gH{ z6FpThLm96DiRt1p`54yjL6~|hb}lX-{0S2tQjC$?SxiP=iq|7x6AYEXXeYRs3^ELp zCD$R@QlK+b^synSCxa&9WR_H&7VqZ973uc+z3!V4t?$;|;Tu}LKPKe*>&S=*hwQ0u zYiG>R(H_6Dc-7gxjgc+xrrH-DPPt`aJlwQ=LTUax1HtGSs_*h#H`s02Y}XojILmKx zRNw4#{kq?;O*mFFXR-dK-LpL}Yf-8qT{A-kb?KHd$&MWzS_6-tab_*DbNE=^Rm-8N zcdD)(o;=v47pC>FuslsYXknbNZOc3#&CVB#hv<6+JP+9NB4~QZ?%1~q`UP)E%&1Wh zcJ8nIvMx#^e|*;RbK;g2=W6OU-QT>hcgE?v4r}fV56QONug^cXd*$Ubx5k_|qczuU zeL81~`LBvQY;s;F6wj^LrmNO5KXa9@Zl2YW$PgJ=6Rbqo42OdM zHH+Z)fb3CSIm*B>(PjokG&T%If&WYc|8D>ZRD$9Pr0IgRV89@y2Q_+gg*3twtN?8; z4u}w>*j_iXYj+W|TxCnVj?Ur1sa^Rd*EwEBCk|`&ovVql zyVx=NSy<5ii4Px6IeBWn iXp3WmUoAU!4zQ~^p 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 diff --git a/app/assets/images/logos/collaboration/inrae.png b/app/assets/images/logos/collaboration/inrae.png new file mode 100644 index 0000000000000000000000000000000000000000..150cf377330d31ee175c14750c21168ec53806fd GIT binary patch literal 4793 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 Tj(zkm00000NkvXXu0mjfO8Gy= literal 0 HcmV?d00001 diff --git a/app/assets/images/logos/collaboration/inrae_logo.jpg b/app/assets/images/logos/collaboration/inrae_logo.jpg deleted file mode 100644 index 2bbf48ea433dba8360f84cb0bb52a1ad2b41689c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9230 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 diff --git a/app/assets/images/logos/collaboration/lirmm.png b/app/assets/images/logos/collaboration/lirmm.png new file mode 100644 index 0000000000000000000000000000000000000000..ea972bbd59ea326b4ebdbc2dbc0807c960229eec GIT binary patch literal 5146 zcmV+#6y@uQP)4`;I~cWZ$MmkwriTnVv=(r^lm%3WtMpY@I&Go&qAXzv36KEUx2iYyyDzu$QdGUF%0|yQ{8}fZ-o5wT``v%P z|BYq{!fk?%+a&2W5S4VxfKU=yTwILY++5sh33cKY5Ep&*>Q#LH`R9m@jg_CAoE!`u zJQ!(dY0xwc4NY1@DoeiV!i5VseE6{Bgb5QSAU-}`KJ$9L*t2I3PMtc1yY9LRUAuOL zt~VUR);kbt_$ybgVE69b^7oM=N1{=qMnQMJu&@vZ4jjO_bLTL0=uot2)22ZHZQC|D91isF z-ybO{DfJ3Sy#c{tckI|9If1O+p+g7B>gsi;PoKuS@4hQVfnw3Td2>Ac@WV(?Pxmia z>5^~0`35mDF%rnc#6;8w)e8^@4<5wPqepS~-FKr)moC+0Ju52<>(;Hq_U+r{@78CW zN~cbp@aUtDqJ8`J{_jWxbi;-XXxp|e#*7(L=lY}0fZ#A^&YY3*-Kte9+;h)8)h0_5 zxpU`EeDu*rsHmt2IgStv#5i;e9yS7#CQTF~ku1J+2s>|b(+@xVAeCzG-o4ScZ{Iot zq*g$%D?dsRy4`M!9z9yJv3kx$(@MPa&O4ILBa?FjUc-x~&D-ILC!Rp}G@&ppE)R7I z$2@uRB!&$eCKW2*RU1%h3U{vyB}HoCLYS;F3k( zTu*nLi|>u!{(WCeAKX^J;JB#|73${An5YSk*~FhxV<&c?_{=!a~#ur5BqA-Wfg0G7_^ zjOpp^#7ynkUg@aMKKl%#Mvan6IvR=y2sXKX{kl|yWXG{%$HM8XVkW~^fy|5_@rT#` zgp6~U=I&{R%}aIo;H_-u#>K>*I3L$td{>?QbxcAe*OF}3EEDeEp!@uVwV$*a!k471Qzz(gW)YM!sXzC$mHcHj%kJy zNu%WFno}rPAs$>RfieLz0#_x00HU`9oGZCtz<>cVvJFQOS&c~Tv%}|vR};G~WIZ{y z0MpVAV`QuISaYr?wp5Hqmb)V=2#QZYqm@dXVDT$&elNeOFidq*i!ej^HFgwsh01A) zgbdA)tPi=*!t(nZNOfPw-*w2qg}6@e=`kh;5DdfQqAK!9QK0T%leQ&S@a&O4W61m& zxcs00g_5h;@R94pTzs;1O7d3j{fVTDVS$lech~ zQE6(OJ}*XJI*fTgY(cxc9B|(aEk@`aY8c_FpF0chbN`0owd>${>T$S*C#gBONhVX< zK|&zN5z6xoMiBuK&OMHbIE-KBHK9{9bk9GJr@mj0J~?N_vvRR`^)B7toO(w(n1>Id z__2RM$+*!-T=+O*Q`^Adw4YlfqG78e=$u#`r`nL;1p1V}05ozt@VoolVfBN}Fu+kP z#HT`vko`aoXvHNkHf%)Rm?_A9bp?FoWwu?YEX&KwZQIxa!GsBcs0(f|HNRAcXe4av zwDeZk{%kttj_Qn*`zNC5whs}%U_QJFi2}58p-2s>eEkzO%#Z0;RI*g50B`yK;Oh7X zac$ivC>LHY!!`(i#VUT}2ztbJWD5kn$~sMe_;jSFCE|~ByNej28*oM&G^$))pRBh5YpBAg2lmLqDbBgo2~n#E$>f}t4Nr8%6sQ~DBt;wFtprK#qB zaeaEB+3L3t^Y~zR<9z~9mz=B-L`+RV(In`xWj++G{}>-FeolPrl@h`+xv6#(cDrlK z5wr>pv865nXryCtt%Qs2S4?jW?q6mDL&PUem{OlZ>Ilv6iJCe?qoXDIeV3Yy7khTW zz9vm2*Ab#f-rE2tU4oT;&gebl%3KUNz!#&zIZ)&`(nQ{3e;kYxZV9jBi?IrS5?N$j&8}3U-V>Vsf?s@xW*L2+szGacOptJ#UfuMqjt0q z7N})oAqcwsuO?&*gij{mRFdj(*0RtcSJj

y=JU{wbk!i;$(dm5EJ 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 IM6N<$g06@4RR910 literal 0 HcmV?d00001 diff --git a/app/assets/images/logos/collaboration/lirmm_logo.png b/app/assets/images/logos/collaboration/lirmm_logo.png deleted file mode 100644 index a177adc5a142f23a83a28cae03a217e8bd1352ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 86558 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 XZ#~CGT={1N{4+JSGHNn#i~IioR}~xX diff --git a/app/assets/images/logos/collaboration/ontoportal.png b/app/assets/images/logos/collaboration/ontoportal.png new file mode 100644 index 0000000000000000000000000000000000000000..f4d5dec193793b33db27e9d753cd394d36cfa247 GIT binary patch literal 194753 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 Ten13Xy$ZWvCIt?}9Zvrncs#GA diff --git a/app/assets/images/logos/collaboration/stanford-university_logo.png b/app/assets/images/logos/collaboration/stanford-university_logo.png deleted file mode 100644 index b9abb4b7f6e1561083797a7206a836b3795b48c8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121975 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 z 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 diff --git a/app/assets/images/logos/collaboration/stanford.png b/app/assets/images/logos/collaboration/stanford.png new file mode 100644 index 0000000000000000000000000000000000000000..e53d39f254cad05dc3e3727496ae927e72f50d00 GIT binary patch literal 15057 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

OeK9O*<3LcYvir8K}qW4%T~;}i2&OJS&QEVbD? zY?kD$S4FEaxG?hrY6GxjDPxjsbCXB+ET0q2Cjs{lPL?(O@U91zf>vILFZTmz0S~A} zK^pnrXH=f3NEPeQ06a@dAfi1=Y>_GDfKZ%YmiR;u|Y0w z*sG;A#XB`t%{pn;^oppEWJ(RNrKgu~mi&!t%7W^hIG*!B)^)bL|GSw>bBgKksp2+u zsX+O`2W*NIz%5_OguSJ_$#|AQQpLfi#=H0TSyH}FJ1wgE+`*?YX{#~3J9s32@H8hS z7pU&?z1v|++kq8*s6zamqvw>1TGz!{w)LN&5S6R)a|fT64cbHyb{r*7epUbyGFo_O zxF83S1Ym2sf)S?9&9MPeR2NKlO(@C&F_LwEw)|Ol3#`RZ$)3>i{*f*StG^V)kwGkU zWww{4d~xO0p%O{{M%A_Y;2_>;$DqkrkrU+k1AomRX|``Fm0br-QtH@y-*G91ESdiB zbB$l-(x!d7`f85sse%nF8~CM2h`oIHSSk+a2(e_oQq&34rBKe_efkQ`6X-S*Lm>Jb zBiVLn;$o@Tw*x+Rp%!(KJ*CLRES~O)EbQ{ey)+LXEzYnJz}8G42TJMhBY1o7J;#KBx$D8D(*MRTaYS-* zXyTH{i)0xGus&#qGU^iEWk)~ND8P8R9uf-vArQ`Y{yIf~zoC*Pmc$v-V8B!A|Gz)t zB0bNp*D{lnOEyZ5s%7LV;>B46?KzdcRkrn0jT%DE>gDA5Lw^jcz3v2BI*9$W>sWAW zIu4Phi$_Y{`c)!51U&%VbEScuwepUOfn}KCV%^pPNp%8PP=$XtDAl#OfIO3}ea9%* z67uSmmWa^Kt##GE(I~Q1M#e~f-eO3`;Dg)A@wuzu?`lYF8TErEKvQuN#FKra=4q{G z&C$J)Wfz0+au+M_rhtL~*S}A!fnHd(@XgdgaG(CVdmbZDlbZqas=WfAYRqyS*Bf#Z z)qp?M=xTy+O}7AbDb{d&l47Tq=-fo>SgDK=36k1)a_hc69uG?0c@TZ6@EABIl`s!a zTx^5f>Il$KM1d31*@JN$4X8f#iomIXylEuOL7+k1Xh-;^vLlQ|_)}#kB z;{_ah1@`d&HK;%xp0rr@{61UtSFRcg+ccsNLN2--d$^wx9UEz2X2L-O>nV*FjSytd zk-5U>8h2gr^H&m#&ow|}@v)j5Qzw&Ja6cQq|4m&}&KhOJ_19^VJV!>Y`{xQLBxKN| z49Vn=IRRZ}qI9VxHjMIWidQ)2+FkvL?7-@2^QVj61aEjl3d$!1Ot*n6EwPo*f917Fw<_cW{NVW97xvrGXcs~r=s|tyNbYn zpY29S1_$V1AmxV(DkpIg#n%`>4cK$_4v7PonJQ0qi4CJmVY3JIXjXD?Avh#VfEZCi znbccurzH#A9QzuqFv0{i5qh;Bpt+Yq`y%b?F~Li)Pf{$feIePBBM@ZB2!-DUqDaok zgS4U`dzFaNKkOLnfKytyN-?DRuWkoho_{@my?S(4kjiSuEs7K-qeAs z1b$Y&nLJQ=7D7^*$AYyQ^@%*3>Q;(Y97Vgj(@m;5|A@eJI#v=Ni{(N>XfY~n%fT%b zYFS5>GiK$12!^cxaZHg+d%{@x%(_xiCaP%RTF4m@5`x5&&AmqJ4vr0Tz$7Gx0MFe> z(}FT2q%R*nk|)U0nWqr>Jiq%u>On`U`Lc5m!G$ z%1zOOBv%Tji29x+8PiJp?Q`{ufR@&T~^`wDPX~1`?q7lv!`!fy@XR~jZv;a%a zKV-J=^c8=Or7fICU1FjPspKArKpJ;tKW|qplVo`Na&;J=a~mszq3-FA?1fUChLJdCKafUSP;?U{NUns1l^P%#r!Yr7b^d4AmnZ7T4{jLDGbU$(J(H3=nQ4Mb0cB z2yeXkn}e1%`ho*vN&Dr^`}I2GyeY@$ZXqwk?{p6o31gd;SS7Tz5^D#p@GGwF>Uy~4 zEgP78&&-m|B_UG%bO<(y)2ERR+h#|W_pxd%ZIQfqbMu$j5F1AKQMmQjn&9mkG94M_ zO3Bx#n)3Zc+tpX1j=?TBG~i2{_QEBd$I5&FIyjx`!m+_ceaOhjrY%t*l9ph>Rx)S> z)rS5cRzQ+DYm|-ld{*+Yd-K@rmHK-LP}>|aLIPWoM+|Tj-K`+D+d4#SS2BGacP~)x zJ?QC6Nrpb@=?U%rGf{ zyw8ZAS+`H_hqE2kC_==BQQRTjO(KhhT`cv;P$EBqS6X#-bUTz7!-9h)jByBll@-v? zrnTPl;J8It5Dvm3viLwDxoefzEc8nnIWijK0#(8ZxofKwNx;Ce^{740L~7fS$ZqI1 zOec(H8!lFH`Ac!o3%;KDbVYy2SWrtp7xe6TBn?5ccZ@5aYh3wcJLy)^7tJSa)=yIn zfZN$pe9JAYXGmZtvJx7eS9js5#T)fGso@SuKioNX4(_MCxMBxfadktYSY2|0qV>d2N1T& zcZ386YH<=1uaaFO8U)EUhJ*5TNbvcsv&Uwy((ZU4kMmM*+Ap~H6ww~1zP+Yd5^j&20aZ~9J2@V9rzfZZo;yLRoD>PUd^eDW^{4+D<2uy8GkS3L zEm(RYXsuRH)}$};x{-KUJPLCrTZeo)p4=f8I>**Xc;FM@{Co&t+!l#|bU1r728(V- zU38^e%xn9hNEF2E)aT^+&nDnrfvlp)UA9MSEpK_(b`P7W?uEzBu(5)J%~eiNZ#G!ok6c6SG!`OQ56vfVw0Rnj6WBwWyzul%S)76xt zT4_+f5y}{YjXxAABBzMntxq#{mQVs^Da*UYey$`)TKMHsf`H2nKB~>SshWW00M@1s zoV{vk#o_nC39$r)6H1DFZI_`+5ztC^YcB1#%+hM@*f7RD=0WuHG_s%Uj-l$c1-#SV z5pxs{Cw@aFGI>pwHKR11|GQKk)L9oC_EETXn3!u26x0Q*XxbaHov*?x3%9~lKLLDL zV!)@@kDiL>+Fg1A6^%(yAX06v%3FYhpK2t{3b+2|FMsFY9h$gE&aT|9yOEuZS)ln6 zZ#%%vT!$P;s)V#jT&z3}NTJqsl{Cy$u81T8Bs`7<6xCvbFl337y6Wq8wJlQerq z>2-0F;(Sd4aXmyq@l#q{6wC8NWE~a-dA9)MGq3=FOPh0y0SpR{kkqj1jXVbV9s1&z zj~>eer#gBZ09$+#XG|TLVbV3l#{{t!$JcYW#I~J*pv~Z$w|-R>h;m@1(>R9g>ms&J zjulVgsAQL>^19n|foi6|*BsGP$+2W`ld*00PhZy0BpS06eZ_s#H$cEba+4kR6p85X zsZFz>fQ^f!Dp*m?gbkU*B{=u+%P;Qxg(9J`ZM|l)WPWpk6$NHa0Fea?wMf=6Yhb_C z<*oa*T#$`-%slU%z8Imq#-e#FT&LyVX~3P=7}+!0V_XarV^|Hx=aGk};7$n3;}AFr zj>(g1>7ZE0K1D({lPljU%6oGGTbeg$93SRPG{4K&b=PuI*wm2?iX(gLu$0bO#}P-L z(BPl|)>N{BfOIog4U3y-tdVpCwzhm22{2+=RwK}|fd=q|FcAvKMMM-^MndfoKI6^_ zPgT338e2ul*xm--XWb3!e^{E*!exRU0L8#a@u*DqR*}0Vwv0(9EAm(Y$ozuF!QL@& zqCgXt0LY@O5Sdw~W#sOozh|KWQ4x0zuNiUI083u9c9xT`j9A^fao9uUGztev;Lq5; z^Y%j{f-+Y>n=uYSpgH^JR{a}k0-i9HuR%5CV`9U|fRb~{kD$ydJ8tW!#w3iqRWht9 zPK1RHpfN!tGnuhuLCBL8q*(ig5}QUvi&8BQ6k(>W*8^8WKyrTVPFdQZyTWSH&g98x z*Y+G!-P)y9KRLZ@la4L>#j#(mS@5N6z}4G@8X{3inK!!^cTAe}3nLy-J$r#cq2|dN$zCVvLU{%)c-sA`I@VioU;ywaL{5b=sE_Kj2}u8 zEUHn2X7Hhpj#^Xtt}*E&l}vhhu537_13fS%%Jdz&LSj&rx~BdU?P{RuA04)+L9|{;*>0BF+I~ z)dG1XA_N9iit0pE#)PYU$1FD-lg8i`6+ZGbM1CnQ5GIAJN}$p2--YByD9shh*YJ6q zD4rWZAi?v7SV=+R>=mRD9jR%|D%VPRDoVX~k9+dnPee`t&&cdAPKU4WJ6@;Gr2a_0)~ZjVZ+$nqf5-|p ztI5Js4ce>_C=oa_)lj;qe2+>^$j~6T@I;A3v^UlZoDJZw4&- zRt8oEG7dO}8nUGn*_lL=KOzsq-OKYNcuE&R0|$_Vo);KX9=<`fkGs1BV5&vLw?TG# z`{+4MB&jD*oZ>g$ zF;iO!H|AD62~<}RxmU|cig0MEjVll8BDTQS#IBUnh{G*KsDEc{LSXhucXa*039S%j zc1Z1$E`f<2wP*e?IFYR+A~?5dyQBt`#b`oo4|sFjjH8k*9Bh7RqKQY|K5}ZwddQNV z&>vpwYRZCSD+mFPXoOiNw?B6e$u4ev4mc;08aCNd4m#Df2j{P8y%4Jxm_cVQQ&?eT z+@uNhObMbKay2|QA>tI5VmirLzbc`-;2V&I);9m_<|y1VU&&gzgl6$9)?MGl858U~ zW`tbZuajkYaxX~_CMdz(<}Txt+;Tso?Wa6|f^Mkg%83#aqyOLDf4o%a-CjbFdQ%|b z3M48>o+GmsaM7Jb<;XeFCl{|*ZPhVZ677EBSweJ6*7o-5E(q;dBF=+aNhz~NfA??G zrOx>N@)U7{tJVor$|dNqd>+eGvQ;UqY$TIQ?kJXxMCG(B#_Bs(DujoIXk{A(C|(oY z8)H%!+!p}`^9mM=<)~Up&%ld`t?n>b7v!eyBlY|v)-Fvi);JXVBmXGzY3C##K)rOa#Ti8z-S70&{*{39JstSh|qz1o~%7 zl>+@acUaEqWtGxkR(=&6z6W@egrE}Qz`t{KvRsB_A$Jt%Wg-uDuiN1D++lPle2gcV z@O?P2q|zDuxDy#$EN&sH(Zw)HBC*I~W6L#hH?e?<6T&igE+!VNRR+Cm9fOX1E*$1o zEa@l9%=mVB+d-Dn92zYb##^2jElnIKxl4<^y<2yWHCDV>9H#HjfH$UPYE-pufNjr@;fKai#-OB*)y@TA7n<>`4IIm7}~zmxXt>XhZnr{By>L4 z0j`M*WFjP8^x0h9+#PHxVI1M$a{;gnF!*JlGNE*LOx*6kh0s_>#2rZzjfXj<0H0;4 zT%d7xF`uE2C$J!Oz+(qC{P4RrnkS2)#=NcXI7NzjEGOQFQsm_P_2jY7{VwC=@?6XF zqB*jv;(sqREa_L^+%qLkms)FW*x|=7%cHvzMiCZ1Wc1rSCTv^3ai9vmS69YCqBa`* zBH}z}?hg0qE-D`~#^~YPNSsJk5t&$A6n7GjIA+izA4K=X31c!y!Jg%TRKF-o^1cBq z0cZM8-=7%%o0DdZV9bfN#}47y6)djhK}#v~WK|}WtNPI7CEE4Lx*`^D&qKD6NR5IA2Z*_bEe4yfXSX6hGh@m8;&aSXvcZ2- zAmJ`0GO|UC;Ub{#=i-VAb=eup7G3HcWP!h)GAP=$kh1?!`zt#p(-+SR-8uv@bhgx+ z@rx{L+=Ga1%xJkZAnJ4f63VMes%s%8{2Tb_)D310k&__1xaE0F7zOBe)hZgBDELLW zy1BjS-`PLK?h${uiHxNRCd8J0g0In+!v2qi&_HdKEp-bAW;>sod**#Hwt|n49FSy=lj0n2eXONlFSWsa0etW zaagi4w{kmm5f8AfxN?Z=c|lC3cur`V{5iEbf-o{#MFXD0dLq9|H?+u#&3&!|C#l6JR~@z)mXWD@qOd`PbX##2G2hHrxUAW zUeykYja#^k*AncSqk3tOqjBIU=36)uRxcC&vD%LGfQ1|*Kg33EHeOIm4ghjtEh=3X z5eo<7F<@d`;Bi*MB}knNs+V0v+%ZPa3L-jTnLI@qRzHy1<$UwIRdjwQqopY3Y3n`S%skEs)w7hEz>dqOqBRq9)3YrMfK_;gpHeSr<4L`AZOCV z0LU&x*8PxrW)StpzKMmwBloq591AiK zJCfNi?+60w>BsrQwPNL_(t)yVAX>Mf-h zRHF_)BR@;o*`Q4R#nNYHF-{iS{<&gz{xVf6^l7i>$K5#Kp$MY-Z$Bw9#}Y{vuuvpLnf2Z=EERun-dl>`eOaN!c*P0jD$j}>g2;;ThU6l59;+~F zkLj!NVN0(uTKZUT#t>Z~QH}7H=Z7*eV~)THC)FG^6DG{$$-e{>JjRkocrrm;)BcxG zg!!+>$tBOf8{>aul-$JsVHrv33l_01XkjbjXs$3GNq&6DW=q^|=#R94m2;v+(COaO$`2jcXXq=&IBjTYX$rYCX`3MJ+Qe}iLd`~m% zc;t}Y6cx~2gun$c5o3?Y7KP_ZM~Wxq#S-$HtYNgQh6wl&e-bS=z7%ckW2Io+bY@zA;v;L03YLg__q^ErZ70YB`eGVobJ(yhv@61SGr5gmrrH zCY-o+StVZcE^;#DpT;%D6VO?T+9i?KYe5Zs-TmYmSx}>sYQ%l7Y?Fgy7fLXEE4#p> zPJ$(yC3c@$q_MVZGKgpSK({(yLpt~%(s(9p1)wo-7g6Y;Ya>HRs+g#SIGuU|cV67Y zY_UqJ2^rlES1S3Y7Z3e`YL061#hWvfh9dQMMY=>xv&yyBI;F0Mmwj+7c$5#x#mWOZ z%eb61_4bOLb}dlsk0k86kHRZ5Qli4!!3;KA9NXhYBGNa6THC|}xo zNS0KH2{(9-G>`5*Fn*!l<|8~LOb@D?S*nErZvM+T3p`=)zixqV4knChJcfB@spj~O z2lU@O&XR}u0Ueqxy+-p68V`OJr`S26B&IeN$HsRtzV|WnvKN)W?;<0e8{(j@Y33GAte!Z6q4f3Nozjl`ic^RnZnC>6Dz&ws} z%;l#V4cIG`~Zt|o_`9%BV+gOd1OZRQW>YKaA z&Tiuk4cIJK-T6m_gNzFd$SDyUm<_Vt^mB|<1Pfu$t=gf;Pnz)2se5=(H1rb^&225eWl7Z-GKxAg0EQn`9wD z1#d?}N}GY0XHh!>byeuq4gq>LXq3?}!d?fC9VM5#*N_LX*B%-h)?c#cMQ}bfCUaHz z=zZ!(dD1#h6F)j@rT&{YM_AUVhx$`rPp=sJyAPjVRbtU% zy>`2aG_lDn7e+(U?hX8HU1!|SDx?z@9+|#E=>nb>LJl5-rnNcbmDsrwKXtPAz9;cL zOBNXma(`1vPXDo4ubjJzI|*u&p5RDEmPTolhqkiHA!;|L#h52t+_YEaP0|&l$O&QD zSIooyNMkU`B>TB%*i4d(1{~9hP_gYjUe3kJJtQsm#qK8@ald#O0b#vm=^t8wFZos_ zK|of?->|ygH}g!MT*og`6)w3-RO?`#V0 z6jn|9d*4z8jdV2o+o%h$Je)16Y(Qb<1vP=?&H5;3MH;%w&>xg7WnY*3j1|;=uUkv_ zus9O9(phfCPAB?%>|eX5d_T$E5H$8!a5vdjP}L54G)&*3;&I~X#Z;yVEH_#Y*m4MJHkCROr9f?U6Ho+ zC0~Oo@(`>lYdr~7IY@+_EtZd0iIQw6i=uc3R&q5I_*u=sLfN>95<>gUsj3tY&tv@% zxti7B=2@RamU2nGAK>egOY1e0w7-~Ll!<|+u7LeKy>zqOa6cV{m~|jr%)GJUwMPC$ z`?n_`(gsMj>_+U`;}YtD>(5Ktm}Tf}_F&}#bzZ7ayniDp>`DW_Q>~bXcu+fFo#n!s z-zlfmdH)}JS~>HNTBCYv^&0i$f-Pz(UG1m0z(w%I&e1cfS71W@uoxCW#o2`E zKH@CSA9Wwd*s%ZE1Vpudl07{pqb3HUKK@w_ZYmL5U|Cm69zP{~cWUGgtcd0gVf{U6 z=!iZ5yU12hR?D%nnsOwI07zlq^YqfJm}mB#82jaEH6DOWw3|&$L#+AUFvm=+{K_~00000NkvXXu0mjf8piy2 literal 0 HcmV?d00001 diff --git a/app/assets/images/logos/ontoportal.svg b/app/assets/images/logos/ontoportal.svg new file mode 100644 index 0000000000..dfb0838d39 --- /dev/null +++ b/app/assets/images/logos/ontoportal.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/logos/supports/agropolisfondation_logo.png b/app/assets/images/logos/supports/agropolisfondation_logo.png deleted file mode 100644 index 35ec92829e02fb68be4fe22d5a6c87fe0124ab6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29060 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 diff --git a/app/assets/images/logos/supports/anr.png b/app/assets/images/logos/supports/anr.png new file mode 100644 index 0000000000000000000000000000000000000000..ebf81e5cb16a974b8b4457e97a115336ec966e15 GIT binary patch literal 9952 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 Eg7E6ViU0rr diff --git a/app/assets/images/logos/supports/eu.png b/app/assets/images/logos/supports/eu.png new file mode 100644 index 0000000000000000000000000000000000000000..bda2c51f037bce0b2ff3329227e9b2a70e596156 GIT binary patch literal 3469 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 aNgJq1h?WTetN}>jAo$>XCdZ?f`Tqd`;+Fvc diff --git a/app/assets/images/logos/supports/msca_eu_logo.jpg b/app/assets/images/logos/supports/msca_eu_logo.jpg deleted file mode 100644 index 94265988862ceda7f2280e8f0a78b209eed9f82b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44126 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 diff --git a/app/assets/images/logos/supports/numev.png b/app/assets/images/logos/supports/numev.png new file mode 100644 index 0000000000000000000000000000000000000000..8f3e33df266723eddf0ed9214e6d43e6f60a4c2b GIT binary patch literal 4328 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 + + diff --git a/app/assets/images/ontoportal-icon.svg b/app/assets/images/ontoportal-icon.svg new file mode 100644 index 0000000000..2cb02a8dfb --- /dev/null +++ b/app/assets/images/ontoportal-icon.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/orange-warning.svg b/app/assets/images/orange-warning.svg new file mode 100644 index 0000000000..bebb567646 --- /dev/null +++ b/app/assets/images/orange-warning.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/assets/images/play-white.svg b/app/assets/images/play-white.svg new file mode 100644 index 0000000000..6da00b8a87 --- /dev/null +++ b/app/assets/images/play-white.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/play.svg b/app/assets/images/play.svg new file mode 100644 index 0000000000..2f97673d3d --- /dev/null +++ b/app/assets/images/play.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/reload.svg b/app/assets/images/reload.svg new file mode 100644 index 0000000000..2aa6dcd66b --- /dev/null +++ b/app/assets/images/reload.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/assets/images/social/api.svg b/app/assets/images/social/api.svg new file mode 100644 index 0000000000..c1a164cc42 --- /dev/null +++ b/app/assets/images/social/api.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/social/email.svg b/app/assets/images/social/email.svg new file mode 100644 index 0000000000..7615bd7082 --- /dev/null +++ b/app/assets/images/social/email.svg @@ -0,0 +1 @@ + mail Created with Sketch Beta. \ No newline at end of file diff --git a/app/assets/images/social/github.svg b/app/assets/images/social/github.svg new file mode 100644 index 0000000000..9f2ef1737d --- /dev/null +++ b/app/assets/images/social/github.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/social/people.svg b/app/assets/images/social/people.svg new file mode 100644 index 0000000000..85f1d5fd09 --- /dev/null +++ b/app/assets/images/social/people.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/social/sparql.svg b/app/assets/images/social/sparql.svg new file mode 100644 index 0000000000..c9aa2e8bea --- /dev/null +++ b/app/assets/images/social/sparql.svg @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/assets/images/social/twitter.svg b/app/assets/images/social/twitter.svg new file mode 100644 index 0000000000..162e21ae2d --- /dev/null +++ b/app/assets/images/social/twitter.svg @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/assets/images/success.svg b/app/assets/images/success.svg new file mode 100644 index 0000000000..1a6d1a81e3 --- /dev/null +++ b/app/assets/images/success.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/summary/arrow-down.svg b/app/assets/images/summary/arrow-down.svg new file mode 100644 index 0000000000..b07860eead --- /dev/null +++ b/app/assets/images/summary/arrow-down.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/summary/documentation.svg b/app/assets/images/summary/documentation.svg new file mode 100644 index 0000000000..826e62cc5b --- /dev/null +++ b/app/assets/images/summary/documentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/images/summary/download.svg b/app/assets/images/summary/download.svg new file mode 100644 index 0000000000..3af86ed8a8 --- /dev/null +++ b/app/assets/images/summary/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/images/summary/homepage.svg b/app/assets/images/summary/homepage.svg new file mode 100644 index 0000000000..4df669b75a --- /dev/null +++ b/app/assets/images/summary/homepage.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/assets/images/summary/sparql.svg b/app/assets/images/summary/sparql.svg new file mode 100644 index 0000000000..c2cda9582d --- /dev/null +++ b/app/assets/images/summary/sparql.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/app/assets/images/update.svg b/app/assets/images/update.svg new file mode 100644 index 0000000000..29d1f5bcbd --- /dev/null +++ b/app/assets/images/update.svg @@ -0,0 +1,3 @@ + + + diff --git a/app/assets/images/upload-file.svg b/app/assets/images/upload-file.svg new file mode 100644 index 0000000000..0693d1e9bc --- /dev/null +++ b/app/assets/images/upload-file.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/upload.svg b/app/assets/images/upload.svg new file mode 100644 index 0000000000..e3c73d56c8 --- /dev/null +++ b/app/assets/images/upload.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/warning.svg b/app/assets/images/warning.svg new file mode 100644 index 0000000000..0ca8db2606 --- /dev/null +++ b/app/assets/images/warning.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/white-check.svg b/app/assets/images/white-check.svg new file mode 100644 index 0000000000..6b657da4fd --- /dev/null +++ b/app/assets/images/white-check.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/images/x.svg b/app/assets/images/x.svg new file mode 100644 index 0000000000..6be564a080 --- /dev/null +++ b/app/assets/images/x.svg @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index 0d0fe33cb7..79646cd338 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -30,7 +30,6 @@ //= require_tree ./components //= require ontologies //= require projects -//= require tooltipster.bundle.min //= require application_esbuild customElements.define('data-table-loader', DataTableLoader ); customElements.define('data-table', DataTable ); diff --git a/app/assets/javascripts/bioportal.js.erb b/app/assets/javascripts/bioportal.js.erb index de68a5f02e..5d679af8a4 100644 --- a/app/assets/javascripts/bioportal.js.erb +++ b/app/assets/javascripts/bioportal.js.erb @@ -512,7 +512,7 @@ function bpPopWindow(e) { newWindow.focus() }; } -jQuery(".footer, div.dropdown-menu.dropdown-menu-right").on("click", "a.pop_window", { w: "800", h: "600" }, bpPopWindow) +jQuery("#submitFeedbackMenuItem").on("click", { w: "800", h: "600" }, bpPopWindow) /************************************************************** * Standardized BP modal popups diff --git a/app/assets/javascripts/bp_search.js.erb b/app/assets/javascripts/bp_search.js.erb index d3befd08ea..d8f44b9f1b 100644 --- a/app/assets/javascripts/bp_search.js.erb +++ b/app/assets/javascripts/bp_search.js.erb @@ -293,6 +293,8 @@ function currentSearchParams() { params.require_definition = jQuery("#search_require_definition").is(":checked"); params.exact_match = jQuery("#search_exact_match").is(":checked"); params.categories = jQuery("#search_categories").val() || ""; + params.lang = jQuery("#select_search_language").val() || ""; + return params; } @@ -325,7 +327,8 @@ function performSearch() { includeNonProduction = jQuery("#search_include_non_production").is(":checked"), includeOnlyDefinitions = jQuery("#search_require_definition").is(":checked"), exactMatch = jQuery("#search_exact_match").is(":checked"), - categories = jQuery("#search_categories").val() || ""; + categories = jQuery("#search_categories").val() || "", + language = jQuery("#select_search_language").val() || ""; // Set the list of search words to be blacklisted for the ontology ownership algorithm blacklistSearchWordsArr = query.split(/\s+/); @@ -336,6 +339,7 @@ function performSearch() { url: determineHTTPS(jQuery(document).data().bp.config.rest_url) + "/search", data: { q: query, + lang: language, include_properties: includeProps, include_views: includeViews, obsolete: includeObsolete, diff --git a/app/assets/javascripts/ontologies.js b/app/assets/javascripts/ontologies.js index b35954e0a7..413f9f2674 100644 --- a/app/assets/javascripts/ontologies.js +++ b/app/assets/javascripts/ontologies.js @@ -17,102 +17,7 @@ function showRestrictionLicensed() { } jQuery(document).ready(function () { - - // Wire up options for restriction how an ontology is viewed - jQuery("#ontology_viewingRestriction").change(function () { - var select = jQuery(this); - if (select.val() == "private") { - hideAllRestrictions() - showRestrictionPrivate(); - } else if (select.val() == "licensed") { - hideAllRestrictions(); - showRestrictionLicensed(); - } else if (select.val() == "public") { - hideAllRestrictions(); - } - }); - - // Make sure you can see the account select if the select list has private selected - if (jQuery("#ontology_viewingRestriction").val() == "private") { - showRestrictionPrivate(); - } else if (jQuery("#ontology_viewingRestriction").val() == "licensed") { - showRestrictionLicensed(); - } - - jQuery("#ontology_isView").live("click", function () { - console.log(jQuery("#ontology_isView").is(":checked")) - if (jQuery("#ontology_isView").is(":checked")) { - jQuery("#ontology_viewOf").removeAttr('disabled').trigger("chosen:updated"); - } else { - jQuery("#ontology_viewOf").attr('disabled', true).trigger("chosen:updated"); - } - }); - - // Wire up chosen selectors - jQuery("#ontology_administeredBy").chosen({width: '100%'}); - jQuery("#ontology_acl").chosen({width: '100%'}); - jQuery("#ontology_hasDomain").chosen({width: '100%'}); - jQuery("#ontology_group").chosen({width: '100%'}); - jQuery('#ontology-browse-help').on('click', bpPopWindow); - - // Wire up chosen selectors - jQuery("#ontology_administeredBy").chosen({width: '100%'}); - jQuery("#ontology_acl").chosen({width: '100%'}); - jQuery("#ontology_hasDomain").chosen({width: '100%'}); - - // Make acronym upcase as you type - jQuery("#ontology_acronym").on('input', function(e) { - var input = $(this); - var start = input[0].selectionStart; - $(this).val(function (_, val) { - return val.toUpperCase(); - }); - input[0].selectionStart = input[0].selectionEnd = start - }) - - // Check acronym as you type - var acronyms = jQuery("#ontology_acronym").data("acronyms"); - jQuery("#ontology_acronym").on('input', function (e) { - var $this = $(this); - var errors = []; - var errorHTML = ""; - - if ($this.val().match("^[^a-z^A-Z]{1}")) { - errors.push("Acronym must start with a letter"); - } - - if ($this.val().match("[^-_0-9a-zA-Z]")) { - errors.push("Acronym must only contain the folowing characters: -, _, letters, and numbers"); - } - - if ($this.val().match(".{17,}")) { - errors.push("Acronym must be sixteen characters or less"); - } - - if (acronyms.indexOf($this.val()) > -1) { - errors.push("Acronym already in use"); - } - - if (errors.length > 0) { - errorHTML = "

  • " + errors.join("
  • ") + "
  • "; - } - - jQuery("#acronym_errors").html(errorHTML); - }); - - jQuery("#ontologyForm").validate({ - errorClass: "ontologyFormError", - errorElement: "div", - rules: { - "ontology[name]": "required", - "ontology[acronym]": "required", - }, - messages: { - "ontology[name]": "Please enter a name", - "ontology[acronym]": "Please enter an acronym", - }, - }); }); /* charts creation */ diff --git a/app/assets/javascripts/tooltipster.bundle.min.js b/app/assets/javascripts/tooltipster.bundle.min.js deleted file mode 100644 index fa810446bf..0000000000 --- a/app/assets/javascripts/tooltipster.bundle.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! tooltipster v4.2.7 */!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("jquery")):b(jQuery)}(this,function(a){function b(a){this.$container,this.constraints=null,this.__$tooltip,this.__init(a)}function c(b,c){var d=!0;return a.each(b,function(a,e){return void 0===c[a]||b[a]!==c[a]?(d=!1,!1):void 0}),d}function d(b){var c=b.attr("id"),d=c?h.window.document.getElementById(c):null;return d?d===b[0]:a.contains(h.window.document.body,b[0])}function e(){if(!g)return!1;var a=g.document.body||g.document.documentElement,b=a.style,c="transition",d=["Moz","Webkit","Khtml","O","ms"];if("string"==typeof b[c])return!0;c=c.charAt(0).toUpperCase()+c.substr(1);for(var e=0;e0?e=c.__plugins[d]:a.each(c.__plugins,function(a,b){return b.name.substring(b.name.length-d.length-1)=="."+d?(e=b,!1):void 0}),e}if(b.name.indexOf(".")<0)throw new Error("Plugins must be namespaced");return c.__plugins[b.name]=b,b.core&&c.__bridge(b.core,c,b.name),this},_trigger:function(){var a=Array.prototype.slice.apply(arguments);return"string"==typeof a[0]&&(a[0]={type:a[0]}),this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate,a),this.__$emitterPublic.trigger.apply(this.__$emitterPublic,a),this},instances:function(b){var c=[],d=b||".tooltipstered";return a(d).each(function(){var b=a(this),d=b.data("tooltipster-ns");d&&a.each(d,function(a,d){c.push(b.data(d))})}),c},instancesLatest:function(){return this.__instancesLatestArr},off:function(){return this.__$emitterPublic.off.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},on:function(){return this.__$emitterPublic.on.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},one:function(){return this.__$emitterPublic.one.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},origins:function(b){var c=b?b+" ":"";return a(c+".tooltipstered").toArray()},setDefaults:function(b){return a.extend(f,b),this},triggerHandler:function(){return this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this}},a.tooltipster=new i,a.Tooltipster=function(b,c){this.__callbacks={close:[],open:[]},this.__closingTime,this.__Content,this.__contentBcr,this.__destroyed=!1,this.__$emitterPrivate=a({}),this.__$emitterPublic=a({}),this.__enabled=!0,this.__garbageCollector,this.__Geometry,this.__lastPosition,this.__namespace="tooltipster-"+Math.round(1e6*Math.random()),this.__options,this.__$originParents,this.__pointerIsOverOrigin=!1,this.__previousThemes=[],this.__state="closed",this.__timeouts={close:[],open:null},this.__touchEvents=[],this.__tracker=null,this._$origin,this._$tooltip,this.__init(b,c)},a.Tooltipster.prototype={__init:function(b,c){var d=this;if(d._$origin=a(b),d.__options=a.extend(!0,{},f,c),d.__optionsFormat(),!h.IE||h.IE>=d.__options.IEmin){var e=null;if(void 0===d._$origin.data("tooltipster-initialTitle")&&(e=d._$origin.attr("title"),void 0===e&&(e=null),d._$origin.data("tooltipster-initialTitle",e)),null!==d.__options.content)d.__contentSet(d.__options.content);else{var g,i=d._$origin.attr("data-tooltip-content");i&&(g=a(i)),g&&g[0]?d.__contentSet(g.first()):d.__contentSet(e)}d._$origin.removeAttr("title").addClass("tooltipstered"),d.__prepareOrigin(),d.__prepareGC(),a.each(d.__options.plugins,function(a,b){d._plug(b)}),h.hasTouchCapability&&a(h.window.document.body).on("touchmove."+d.__namespace+"-triggerOpen",function(a){d._touchRecordEvent(a)}),d._on("created",function(){d.__prepareTooltip()})._on("repositioned",function(a){d.__lastPosition=a.position})}else d.__options.disabled=!0},__contentInsert:function(){var a=this,b=a._$tooltip.find(".tooltipster-content"),c=a.__Content,d=function(a){c=a};return a._trigger({type:"format",content:a.__Content,format:d}),a.__options.functionFormat&&(c=a.__options.functionFormat.call(a,a,{origin:a._$origin[0]},a.__Content)),"string"!=typeof c||a.__options.contentAsHTML?b.empty().append(c):b.text(c),a},__contentSet:function(b){return b instanceof a&&this.__options.contentCloning&&(b=b.clone(!0)),this.__Content=b,this._trigger({type:"updated",content:b}),this},__destroyError:function(){throw new Error("This tooltip has been destroyed and cannot execute your method call.")},__geometry:function(){var b=this,c=b._$origin,d=b._$origin.is("area");if(d){var e=b._$origin.parent().attr("name");c=a('img[usemap="#'+e+'"]')}var f=c[0].getBoundingClientRect(),g=a(h.window.document),i=a(h.window),j=c,k={available:{document:null,window:null},document:{size:{height:g.height(),width:g.width()}},window:{scroll:{left:h.window.scrollX||h.window.document.documentElement.scrollLeft,top:h.window.scrollY||h.window.document.documentElement.scrollTop},size:{height:i.height(),width:i.width()}},origin:{fixedLineage:!1,offset:{},size:{height:f.bottom-f.top,width:f.right-f.left},usemapImage:d?c[0]:null,windowOffset:{bottom:f.bottom,left:f.left,right:f.right,top:f.top}}};if(d){var l=b._$origin.attr("shape"),m=b._$origin.attr("coords");if(m&&(m=m.split(","),a.map(m,function(a,b){m[b]=parseInt(a)})),"default"!=l)switch(l){case"circle":var n=m[0],o=m[1],p=m[2],q=o-p,r=n-p;k.origin.size.height=2*p,k.origin.size.width=k.origin.size.height,k.origin.windowOffset.left+=r,k.origin.windowOffset.top+=q;break;case"rect":var s=m[0],t=m[1],u=m[2],v=m[3];k.origin.size.height=v-t,k.origin.size.width=u-s,k.origin.windowOffset.left+=s,k.origin.windowOffset.top+=t;break;case"poly":for(var w=0,x=0,y=0,z=0,A="even",B=0;By&&(y=C,0===B&&(w=y)),w>C&&(w=C),A="odd"):(C>z&&(z=C,1==B&&(x=z)),x>C&&(x=C),A="even")}k.origin.size.height=z-x,k.origin.size.width=y-w,k.origin.windowOffset.left+=w,k.origin.windowOffset.top+=x}}var D=function(a){k.origin.size.height=a.height,k.origin.windowOffset.left=a.left,k.origin.windowOffset.top=a.top,k.origin.size.width=a.width};for(b._trigger({type:"geometry",edit:D,geometry:{height:k.origin.size.height,left:k.origin.windowOffset.left,top:k.origin.windowOffset.top,width:k.origin.size.width}}),k.origin.windowOffset.right=k.origin.windowOffset.left+k.origin.size.width,k.origin.windowOffset.bottom=k.origin.windowOffset.top+k.origin.size.height,k.origin.offset.left=k.origin.windowOffset.left+k.window.scroll.left,k.origin.offset.top=k.origin.windowOffset.top+k.window.scroll.top,k.origin.offset.bottom=k.origin.offset.top+k.origin.size.height,k.origin.offset.right=k.origin.offset.left+k.origin.size.width,k.available.document={bottom:{height:k.document.size.height-k.origin.offset.bottom,width:k.document.size.width},left:{height:k.document.size.height,width:k.origin.offset.left},right:{height:k.document.size.height,width:k.document.size.width-k.origin.offset.right},top:{height:k.origin.offset.top,width:k.document.size.width}},k.available.window={bottom:{height:Math.max(k.window.size.height-Math.max(k.origin.windowOffset.bottom,0),0),width:k.window.size.width},left:{height:k.window.size.height,width:Math.max(k.origin.windowOffset.left,0)},right:{height:k.window.size.height,width:Math.max(k.window.size.width-Math.max(k.origin.windowOffset.right,0),0)},top:{height:Math.max(k.origin.windowOffset.top,0),width:k.window.size.width}};"html"!=j[0].tagName.toLowerCase();){if("fixed"==j.css("position")){k.origin.fixedLineage=!0;break}j=j.parent()}return k},__optionsFormat:function(){return"number"==typeof this.__options.animationDuration&&(this.__options.animationDuration=[this.__options.animationDuration,this.__options.animationDuration]),"number"==typeof this.__options.delay&&(this.__options.delay=[this.__options.delay,this.__options.delay]),"number"==typeof this.__options.delayTouch&&(this.__options.delayTouch=[this.__options.delayTouch,this.__options.delayTouch]),"string"==typeof this.__options.theme&&(this.__options.theme=[this.__options.theme]),null===this.__options.parent?this.__options.parent=a(h.window.document.body):"string"==typeof this.__options.parent&&(this.__options.parent=a(this.__options.parent)),"hover"==this.__options.trigger?(this.__options.triggerOpen={mouseenter:!0,touchstart:!0},this.__options.triggerClose={mouseleave:!0,originClick:!0,touchleave:!0}):"click"==this.__options.trigger&&(this.__options.triggerOpen={click:!0,tap:!0},this.__options.triggerClose={click:!0,tap:!0}),this._trigger("options"),this},__prepareGC:function(){var b=this;return b.__options.selfDestruction?b.__garbageCollector=setInterval(function(){var c=(new Date).getTime();b.__touchEvents=a.grep(b.__touchEvents,function(a,b){return c-a.time>6e4}),d(b._$origin)||b.close(function(){b.destroy()})},2e4):clearInterval(b.__garbageCollector),b},__prepareOrigin:function(){var a=this;if(a._$origin.off("."+a.__namespace+"-triggerOpen"),h.hasTouchCapability&&a._$origin.on("touchstart."+a.__namespace+"-triggerOpen touchend."+a.__namespace+"-triggerOpen touchcancel."+a.__namespace+"-triggerOpen",function(b){a._touchRecordEvent(b)}),a.__options.triggerOpen.click||a.__options.triggerOpen.tap&&h.hasTouchCapability){var b="";a.__options.triggerOpen.click&&(b+="click."+a.__namespace+"-triggerOpen "),a.__options.triggerOpen.tap&&h.hasTouchCapability&&(b+="touchend."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){a._touchIsMeaningfulEvent(b)&&a._open(b)})}if(a.__options.triggerOpen.mouseenter||a.__options.triggerOpen.touchstart&&h.hasTouchCapability){var b="";a.__options.triggerOpen.mouseenter&&(b+="mouseenter."+a.__namespace+"-triggerOpen "),a.__options.triggerOpen.touchstart&&h.hasTouchCapability&&(b+="touchstart."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){!a._touchIsTouchEvent(b)&&a._touchIsEmulatedEvent(b)||(a.__pointerIsOverOrigin=!0,a._openShortly(b))})}if(a.__options.triggerClose.mouseleave||a.__options.triggerClose.touchleave&&h.hasTouchCapability){var b="";a.__options.triggerClose.mouseleave&&(b+="mouseleave."+a.__namespace+"-triggerOpen "),a.__options.triggerClose.touchleave&&h.hasTouchCapability&&(b+="touchend."+a.__namespace+"-triggerOpen touchcancel."+a.__namespace+"-triggerOpen"),a._$origin.on(b,function(b){a._touchIsMeaningfulEvent(b)&&(a.__pointerIsOverOrigin=!1)})}return a},__prepareTooltip:function(){var b=this,c=b.__options.interactive?"auto":"";return b._$tooltip.attr("id",b.__namespace).css({"pointer-events":c,zIndex:b.__options.zIndex}),a.each(b.__previousThemes,function(a,c){b._$tooltip.removeClass(c)}),a.each(b.__options.theme,function(a,c){b._$tooltip.addClass(c)}),b.__previousThemes=a.merge([],b.__options.theme),b},__scrollHandler:function(b){var c=this;if(c.__options.triggerClose.scroll)c._close(b);else if(d(c._$origin)&&d(c._$tooltip)){var e=null;if(b.target===h.window.document)c.__Geometry.origin.fixedLineage||c.__options.repositionOnScroll&&c.reposition(b);else{e=c.__geometry();var f=!1;if("fixed"!=c._$origin.css("position")&&c.__$originParents.each(function(b,c){var d=a(c),g=d.css("overflow-x"),h=d.css("overflow-y");if("visible"!=g||"visible"!=h){var i=c.getBoundingClientRect();if("visible"!=g&&(e.origin.windowOffset.lefti.right))return f=!0,!1;if("visible"!=h&&(e.origin.windowOffset.topi.bottom))return f=!0,!1}return"fixed"==d.css("position")?!1:void 0}),f)c._$tooltip.css("visibility","hidden");else if(c._$tooltip.css("visibility","visible"),c.__options.repositionOnScroll)c.reposition(b);else{var g=e.origin.offset.left-c.__Geometry.origin.offset.left,i=e.origin.offset.top-c.__Geometry.origin.offset.top;c._$tooltip.css({left:c.__lastPosition.coord.left+g,top:c.__lastPosition.coord.top+i})}}c._trigger({type:"scroll",event:b,geo:e})}return c},__stateSet:function(a){return this.__state=a,this._trigger({type:"state",state:a}),this},__timeoutsClear:function(){return clearTimeout(this.__timeouts.open),this.__timeouts.open=null,a.each(this.__timeouts.close,function(a,b){clearTimeout(b)}),this.__timeouts.close=[],this},__trackerStart:function(){var a=this,b=a._$tooltip.find(".tooltipster-content");return a.__options.trackTooltip&&(a.__contentBcr=b[0].getBoundingClientRect()),a.__tracker=setInterval(function(){if(d(a._$origin)&&d(a._$tooltip)){if(a.__options.trackOrigin){var e=a.__geometry(),f=!1;c(e.origin.size,a.__Geometry.origin.size)&&(a.__Geometry.origin.fixedLineage?c(e.origin.windowOffset,a.__Geometry.origin.windowOffset)&&(f=!0):c(e.origin.offset,a.__Geometry.origin.offset)&&(f=!0)),f||(a.__options.triggerClose.mouseleave?a._close():a.reposition())}if(a.__options.trackTooltip){var g=b[0].getBoundingClientRect();g.height===a.__contentBcr.height&&g.width===a.__contentBcr.width||(a.reposition(),a.__contentBcr=g)}}else a._close()},a.__options.trackerInterval),a},_close:function(b,c,d){var e=this,f=!0;if(e._trigger({type:"close",event:b,stop:function(){f=!1}}),f||d){c&&e.__callbacks.close.push(c),e.__callbacks.open=[],e.__timeoutsClear();var g=function(){a.each(e.__callbacks.close,function(a,c){c.call(e,e,{event:b,origin:e._$origin[0]})}),e.__callbacks.close=[]};if("closed"!=e.__state){var i=!0,j=new Date,k=j.getTime(),l=k+e.__options.animationDuration[1];if("disappearing"==e.__state&&l>e.__closingTime&&e.__options.animationDuration[1]>0&&(i=!1),i){e.__closingTime=l,"disappearing"!=e.__state&&e.__stateSet("disappearing");var m=function(){clearInterval(e.__tracker),e._trigger({type:"closing",event:b}),e._$tooltip.off("."+e.__namespace+"-triggerClose").removeClass("tooltipster-dying"),a(h.window).off("."+e.__namespace+"-triggerClose"),e.__$originParents.each(function(b,c){a(c).off("scroll."+e.__namespace+"-triggerClose")}),e.__$originParents=null,a(h.window.document.body).off("."+e.__namespace+"-triggerClose"),e._$origin.off("."+e.__namespace+"-triggerClose"),e._off("dismissable"),e.__stateSet("closed"),e._trigger({type:"after",event:b}),e.__options.functionAfter&&e.__options.functionAfter.call(e,e,{event:b,origin:e._$origin[0]}),g()};h.hasTransitions?(e._$tooltip.css({"-moz-animation-duration":e.__options.animationDuration[1]+"ms","-ms-animation-duration":e.__options.animationDuration[1]+"ms","-o-animation-duration":e.__options.animationDuration[1]+"ms","-webkit-animation-duration":e.__options.animationDuration[1]+"ms","animation-duration":e.__options.animationDuration[1]+"ms","transition-duration":e.__options.animationDuration[1]+"ms"}),e._$tooltip.clearQueue().removeClass("tooltipster-show").addClass("tooltipster-dying"),e.__options.animationDuration[1]>0&&e._$tooltip.delay(e.__options.animationDuration[1]),e._$tooltip.queue(m)):e._$tooltip.stop().fadeOut(e.__options.animationDuration[1],m)}}else g()}return e},_off:function(){return this.__$emitterPrivate.off.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_on:function(){return this.__$emitterPrivate.on.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_one:function(){return this.__$emitterPrivate.one.apply(this.__$emitterPrivate,Array.prototype.slice.apply(arguments)),this},_open:function(b,c){var e=this;if(!e.__destroying&&d(e._$origin)&&e.__enabled){var f=!0;if("closed"==e.__state&&(e._trigger({type:"before",event:b,stop:function(){f=!1}}),f&&e.__options.functionBefore&&(f=e.__options.functionBefore.call(e,e,{event:b,origin:e._$origin[0]}))),f!==!1&&null!==e.__Content){c&&e.__callbacks.open.push(c),e.__callbacks.close=[],e.__timeoutsClear();var g,i=function(){"stable"!=e.__state&&e.__stateSet("stable"),a.each(e.__callbacks.open,function(a,b){b.call(e,e,{origin:e._$origin[0],tooltip:e._$tooltip[0]})}),e.__callbacks.open=[]};if("closed"!==e.__state)g=0,"disappearing"===e.__state?(e.__stateSet("appearing"),h.hasTransitions?(e._$tooltip.clearQueue().removeClass("tooltipster-dying").addClass("tooltipster-show"),e.__options.animationDuration[0]>0&&e._$tooltip.delay(e.__options.animationDuration[0]),e._$tooltip.queue(i)):e._$tooltip.stop().fadeIn(i)):"stable"==e.__state&&i();else{if(e.__stateSet("appearing"),g=e.__options.animationDuration[0],e.__contentInsert(),e.reposition(b,!0),h.hasTransitions?(e._$tooltip.addClass("tooltipster-"+e.__options.animation).addClass("tooltipster-initial").css({"-moz-animation-duration":e.__options.animationDuration[0]+"ms","-ms-animation-duration":e.__options.animationDuration[0]+"ms","-o-animation-duration":e.__options.animationDuration[0]+"ms","-webkit-animation-duration":e.__options.animationDuration[0]+"ms","animation-duration":e.__options.animationDuration[0]+"ms","transition-duration":e.__options.animationDuration[0]+"ms"}),setTimeout(function(){"closed"!=e.__state&&(e._$tooltip.addClass("tooltipster-show").removeClass("tooltipster-initial"),e.__options.animationDuration[0]>0&&e._$tooltip.delay(e.__options.animationDuration[0]),e._$tooltip.queue(i))},0)):e._$tooltip.css("display","none").fadeIn(e.__options.animationDuration[0],i),e.__trackerStart(),a(h.window).on("resize."+e.__namespace+"-triggerClose",function(b){var c=a(document.activeElement);(c.is("input")||c.is("textarea"))&&a.contains(e._$tooltip[0],c[0])||e.reposition(b)}).on("scroll."+e.__namespace+"-triggerClose",function(a){e.__scrollHandler(a)}),e.__$originParents=e._$origin.parents(),e.__$originParents.each(function(b,c){a(c).on("scroll."+e.__namespace+"-triggerClose",function(a){e.__scrollHandler(a)})}),e.__options.triggerClose.mouseleave||e.__options.triggerClose.touchleave&&h.hasTouchCapability){e._on("dismissable",function(a){a.dismissable?a.delay?(m=setTimeout(function(){e._close(a.event)},a.delay),e.__timeouts.close.push(m)):e._close(a):clearTimeout(m)});var j=e._$origin,k="",l="",m=null;e.__options.interactive&&(j=j.add(e._$tooltip)),e.__options.triggerClose.mouseleave&&(k+="mouseenter."+e.__namespace+"-triggerClose ",l+="mouseleave."+e.__namespace+"-triggerClose "),e.__options.triggerClose.touchleave&&h.hasTouchCapability&&(k+="touchstart."+e.__namespace+"-triggerClose",l+="touchend."+e.__namespace+"-triggerClose touchcancel."+e.__namespace+"-triggerClose"),j.on(l,function(a){if(e._touchIsTouchEvent(a)||!e._touchIsEmulatedEvent(a)){var b="mouseleave"==a.type?e.__options.delay:e.__options.delayTouch;e._trigger({delay:b[1],dismissable:!0,event:a,type:"dismissable"})}}).on(k,function(a){!e._touchIsTouchEvent(a)&&e._touchIsEmulatedEvent(a)||e._trigger({dismissable:!1,event:a,type:"dismissable"})})}e.__options.triggerClose.originClick&&e._$origin.on("click."+e.__namespace+"-triggerClose",function(a){e._touchIsTouchEvent(a)||e._touchIsEmulatedEvent(a)||e._close(a)}),(e.__options.triggerClose.click||e.__options.triggerClose.tap&&h.hasTouchCapability)&&setTimeout(function(){if("closed"!=e.__state){var b="",c=a(h.window.document.body);e.__options.triggerClose.click&&(b+="click."+e.__namespace+"-triggerClose "),e.__options.triggerClose.tap&&h.hasTouchCapability&&(b+="touchend."+e.__namespace+"-triggerClose"),c.on(b,function(b){e._touchIsMeaningfulEvent(b)&&(e._touchRecordEvent(b),e.__options.interactive&&a.contains(e._$tooltip[0],b.target)||e._close(b))}),e.__options.triggerClose.tap&&h.hasTouchCapability&&c.on("touchstart."+e.__namespace+"-triggerClose",function(a){e._touchRecordEvent(a)})}},0),e._trigger("ready"),e.__options.functionReady&&e.__options.functionReady.call(e,e,{origin:e._$origin[0],tooltip:e._$tooltip[0]})}if(e.__options.timer>0){var m=setTimeout(function(){e._close()},e.__options.timer+g);e.__timeouts.close.push(m)}}}return e},_openShortly:function(a){var b=this,c=!0;if("stable"!=b.__state&&"appearing"!=b.__state&&!b.__timeouts.open&&(b._trigger({type:"start",event:a,stop:function(){c=!1}}),c)){var d=0==a.type.indexOf("touch")?b.__options.delayTouch:b.__options.delay;d[0]?b.__timeouts.open=setTimeout(function(){b.__timeouts.open=null,b.__pointerIsOverOrigin&&b._touchIsMeaningfulEvent(a)?(b._trigger("startend"),b._open(a)):b._trigger("startcancel")},d[0]):(b._trigger("startend"),b._open(a))}return b},_optionsExtract:function(b,c){var d=this,e=a.extend(!0,{},c),f=d.__options[b];return f||(f={},a.each(c,function(a,b){var c=d.__options[a];void 0!==c&&(f[a]=c)})),a.each(e,function(b,c){void 0!==f[b]&&("object"!=typeof c||c instanceof Array||null==c||"object"!=typeof f[b]||f[b]instanceof Array||null==f[b]?e[b]=f[b]:a.extend(e[b],f[b]))}),e},_plug:function(b){var c=a.tooltipster._plugin(b);if(!c)throw new Error('The "'+b+'" plugin is not defined');return c.instance&&a.tooltipster.__bridge(c.instance,this,c.name),this},_touchIsEmulatedEvent:function(a){for(var b=!1,c=(new Date).getTime(),d=this.__touchEvents.length-1;d>=0;d--){var e=this.__touchEvents[d];if(!(c-e.time<500))break;e.target===a.target&&(b=!0)}return b},_touchIsMeaningfulEvent:function(a){return this._touchIsTouchEvent(a)&&!this._touchSwiped(a.target)||!this._touchIsTouchEvent(a)&&!this._touchIsEmulatedEvent(a)},_touchIsTouchEvent:function(a){return 0==a.type.indexOf("touch")},_touchRecordEvent:function(a){return this._touchIsTouchEvent(a)&&(a.time=(new Date).getTime(),this.__touchEvents.push(a)),this},_touchSwiped:function(a){for(var b=!1,c=this.__touchEvents.length-1;c>=0;c--){var d=this.__touchEvents[c];if("touchmove"==d.type){b=!0;break}if("touchstart"==d.type&&a===d.target)break}return b},_trigger:function(){var b=Array.prototype.slice.apply(arguments);return"string"==typeof b[0]&&(b[0]={type:b[0]}),b[0].instance=this,b[0].origin=this._$origin?this._$origin[0]:null,b[0].tooltip=this._$tooltip?this._$tooltip[0]:null,this.__$emitterPrivate.trigger.apply(this.__$emitterPrivate,b),a.tooltipster._trigger.apply(a.tooltipster,b),this.__$emitterPublic.trigger.apply(this.__$emitterPublic,b),this},_unplug:function(b){var c=this;if(c[b]){var d=a.tooltipster._plugin(b);d.instance&&a.each(d.instance,function(a,d){c[a]&&c[a].bridged===c[b]&&delete c[a]}),c[b].__destroy&&c[b].__destroy(),delete c[b]}return c},close:function(a){return this.__destroyed?this.__destroyError():this._close(null,a),this},content:function(a){var b=this;if(void 0===a)return b.__Content;if(b.__destroyed)b.__destroyError();else if(b.__contentSet(a),null!==b.__Content){if("closed"!==b.__state&&(b.__contentInsert(),b.reposition(),b.__options.updateAnimation))if(h.hasTransitions){var c=b.__options.updateAnimation;b._$tooltip.addClass("tooltipster-update-"+c),setTimeout(function(){"closed"!=b.__state&&b._$tooltip.removeClass("tooltipster-update-"+c)},1e3)}else b._$tooltip.fadeTo(200,.5,function(){"closed"!=b.__state&&b._$tooltip.fadeTo(200,1)})}else b._close();return b},destroy:function(){var b=this;if(b.__destroyed)b.__destroyError();else{"closed"!=b.__state?b.option("animationDuration",0)._close(null,null,!0):b.__timeoutsClear(),b._trigger("destroy"),b.__destroyed=!0,b._$origin.removeData(b.__namespace).off("."+b.__namespace+"-triggerOpen"),a(h.window.document.body).off("."+b.__namespace+"-triggerOpen");var c=b._$origin.data("tooltipster-ns");if(c)if(1===c.length){var d=null;"previous"==b.__options.restoration?d=b._$origin.data("tooltipster-initialTitle"):"current"==b.__options.restoration&&(d="string"==typeof b.__Content?b.__Content:a("
    ").append(b.__Content).html()),d&&b._$origin.attr("title",d),b._$origin.removeClass("tooltipstered"),b._$origin.removeData("tooltipster-ns").removeData("tooltipster-initialTitle")}else c=a.grep(c,function(a,c){return a!==b.__namespace}),b._$origin.data("tooltipster-ns",c);b._trigger("destroyed"),b._off(),b.off(),b.__Content=null,b.__$emitterPrivate=null,b.__$emitterPublic=null,b.__options.parent=null,b._$origin=null,b._$tooltip=null,a.tooltipster.__instancesLatestArr=a.grep(a.tooltipster.__instancesLatestArr,function(a,c){return b!==a}),clearInterval(b.__garbageCollector)}return b},disable:function(){return this.__destroyed?(this.__destroyError(),this):(this._close(),this.__enabled=!1,this)},elementOrigin:function(){return this.__destroyed?void this.__destroyError():this._$origin[0]},elementTooltip:function(){return this._$tooltip?this._$tooltip[0]:null},enable:function(){return this.__enabled=!0,this},hide:function(a){return this.close(a)},instance:function(){return this},off:function(){return this.__destroyed||this.__$emitterPublic.off.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},on:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.on.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},one:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.one.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this},open:function(a){return this.__destroyed?this.__destroyError():this._open(null,a),this},option:function(b,c){return void 0===c?this.__options[b]:(this.__destroyed?this.__destroyError():(this.__options[b]=c,this.__optionsFormat(),a.inArray(b,["trigger","triggerClose","triggerOpen"])>=0&&this.__prepareOrigin(),"selfDestruction"===b&&this.__prepareGC()),this)},reposition:function(a,b){var c=this;return c.__destroyed?c.__destroyError():"closed"!=c.__state&&d(c._$origin)&&(b||d(c._$tooltip))&&(b||c._$tooltip.detach(),c.__Geometry=c.__geometry(),c._trigger({type:"reposition",event:a,helper:{geo:c.__Geometry}})),c},show:function(a){return this.open(a)},status:function(){return{destroyed:this.__destroyed,enabled:this.__enabled,open:"closed"!==this.__state,state:this.__state}},triggerHandler:function(){return this.__destroyed?this.__destroyError():this.__$emitterPublic.triggerHandler.apply(this.__$emitterPublic,Array.prototype.slice.apply(arguments)),this}},a.fn.tooltipster=function(){var b=Array.prototype.slice.apply(arguments),c="You are using a single HTML element as content for several tooltips. You probably want to set the contentCloning option to TRUE.";if(0===this.length)return this;if("string"==typeof b[0]){var d="#*$~&";return this.each(function(){var e=a(this).data("tooltipster-ns"),f=e?a(this).data(e[0]):null;if(!f)throw new Error("You called Tooltipster's \""+b[0]+'" method on an uninitialized element');if("function"!=typeof f[b[0]])throw new Error('Unknown method "'+b[0]+'"');this.length>1&&"content"==b[0]&&(b[1]instanceof a||"object"==typeof b[1]&&null!=b[1]&&b[1].tagName)&&!f.__options.contentCloning&&f.__options.debug&&console.log(c);var g=f[b[0]](b[1],b[2]);return g!==f||"instance"===b[0]?(d=g,!1):void 0}),"#*$~&"!==d?d:this}a.tooltipster.__instancesLatestArr=[];var e=b[0]&&void 0!==b[0].multiple,g=e&&b[0].multiple||!e&&f.multiple,h=b[0]&&void 0!==b[0].content,i=h&&b[0].content||!h&&f.content,j=b[0]&&void 0!==b[0].contentCloning,k=j&&b[0].contentCloning||!j&&f.contentCloning,l=b[0]&&void 0!==b[0].debug,m=l&&b[0].debug||!l&&f.debug;return this.length>1&&(i instanceof a||"object"==typeof i&&null!=i&&i.tagName)&&!k&&m&&console.log(c),this.each(function(){var c=!1,d=a(this),e=d.data("tooltipster-ns"),f=null;e?g?c=!0:m&&(console.log("Tooltipster: one or more tooltips are already attached to the element below. Ignoring."),console.log(this)):c=!0,c&&(f=new a.Tooltipster(this,b[0]),e||(e=[]),e.push(f.__namespace),d.data("tooltipster-ns",e),d.data(f.__namespace,f),f.__options.functionInit&&f.__options.functionInit.call(f,f,{origin:this}),f._trigger("init")),a.tooltipster.__instancesLatestArr.push(f)}),this},b.prototype={__init:function(b){this.__$tooltip=b,this.__$tooltip.css({left:0,overflow:"hidden",position:"absolute",top:0}).find(".tooltipster-content").css("overflow","auto"),this.$container=a('
    ').append(this.__$tooltip).appendTo(h.window.document.body)},__forceRedraw:function(){var a=this.__$tooltip.parent();this.__$tooltip.detach(),this.__$tooltip.appendTo(a)},constrain:function(a,b){return this.constraints={width:a,height:b},this.__$tooltip.css({display:"block",height:"",overflow:"auto",width:a}),this},destroy:function(){this.__$tooltip.detach().find(".tooltipster-content").css({display:"",overflow:""}),this.$container.remove()},free:function(){return this.constraints=null,this.__$tooltip.css({display:"",height:"",overflow:"visible",width:""}),this},measure:function(){this.__forceRedraw();var a=this.__$tooltip[0].getBoundingClientRect(),b={size:{height:a.height||a.bottom-a.top,width:a.width||a.right-a.left}};if(this.constraints){var c=this.__$tooltip.find(".tooltipster-content"),d=this.__$tooltip.outerHeight(),e=c[0].getBoundingClientRect(),f={height:d<=this.constraints.height,width:a.width<=this.constraints.width&&e.width>=c[0].scrollWidth-1};b.fits=f.height&&f.width}return h.IE&&h.IE<=11&&b.size.width!==h.window.document.documentElement.clientWidth&&(b.size.width=Math.ceil(b.size.width)+1),b}};var j=navigator.userAgent.toLowerCase();-1!=j.indexOf("msie")?h.IE=parseInt(j.split("msie")[1]):-1!==j.toLowerCase().indexOf("trident")&&-1!==j.indexOf(" rv:11")?h.IE=11:-1!=j.toLowerCase().indexOf("edge/")&&(h.IE=parseInt(j.toLowerCase().split("edge/")[1]));var k="tooltipster.sideTip";return a.tooltipster._plugin({name:k,instance:{__defaults:function(){return{arrow:!0,distance:6,functionPosition:null,maxWidth:null,minIntersection:16,minWidth:0,position:null,side:"top",viewportAware:!0}},__init:function(a){var b=this;b.__instance=a,b.__namespace="tooltipster-sideTip-"+Math.round(1e6*Math.random()),b.__previousState="closed",b.__options,b.__optionsFormat(),b.__instance._on("state."+b.__namespace,function(a){"closed"==a.state?b.__close():"appearing"==a.state&&"closed"==b.__previousState&&b.__create(),b.__previousState=a.state}),b.__instance._on("options."+b.__namespace,function(){b.__optionsFormat()}),b.__instance._on("reposition."+b.__namespace,function(a){b.__reposition(a.event,a.helper)})},__close:function(){this.__instance.content()instanceof a&&this.__instance.content().detach(),this.__instance._$tooltip.remove(),this.__instance._$tooltip=null},__create:function(){var b=a('
    ');this.__options.arrow||b.find(".tooltipster-box").css("margin",0).end().find(".tooltipster-arrow").hide(),this.__options.minWidth&&b.css("min-width",this.__options.minWidth+"px"),this.__options.maxWidth&&b.css("max-width",this.__options.maxWidth+"px"), -this.__instance._$tooltip=b,this.__instance._trigger("created")},__destroy:function(){this.__instance._off("."+self.__namespace)},__optionsFormat:function(){var b=this;if(b.__options=b.__instance._optionsExtract(k,b.__defaults()),b.__options.position&&(b.__options.side=b.__options.position),"object"!=typeof b.__options.distance&&(b.__options.distance=[b.__options.distance]),b.__options.distance.length<4&&(void 0===b.__options.distance[1]&&(b.__options.distance[1]=b.__options.distance[0]),void 0===b.__options.distance[2]&&(b.__options.distance[2]=b.__options.distance[0]),void 0===b.__options.distance[3]&&(b.__options.distance[3]=b.__options.distance[1]),b.__options.distance={top:b.__options.distance[0],right:b.__options.distance[1],bottom:b.__options.distance[2],left:b.__options.distance[3]}),"string"==typeof b.__options.side){var c={top:"bottom",right:"left",bottom:"top",left:"right"};b.__options.side=[b.__options.side,c[b.__options.side]],"left"==b.__options.side[0]||"right"==b.__options.side[0]?b.__options.side.push("top","bottom"):b.__options.side.push("right","left")}6===a.tooltipster._env.IE&&b.__options.arrow!==!0&&(b.__options.arrow=!1)},__reposition:function(b,c){var d,e=this,f=e.__targetFind(c),g=[];e.__instance._$tooltip.detach();var h=e.__instance._$tooltip.clone(),i=a.tooltipster._getRuler(h),j=!1,k=e.__instance.option("animation");switch(k&&h.removeClass("tooltipster-"+k),a.each(["window","document"],function(d,k){var l=null;if(e.__instance._trigger({container:k,helper:c,satisfied:j,takeTest:function(a){l=a},results:g,type:"positionTest"}),1==l||0!=l&&0==j&&("window"!=k||e.__options.viewportAware))for(var d=0;d=h.outerSize.width&&c.geo.available[k][n].height>=h.outerSize.height?h.fits=!0:h.fits=!1:h.fits=p.fits,"window"==k&&(h.fits?"top"==n||"bottom"==n?h.whole=c.geo.origin.windowOffset.right>=e.__options.minIntersection&&c.geo.window.size.width-c.geo.origin.windowOffset.left>=e.__options.minIntersection:h.whole=c.geo.origin.windowOffset.bottom>=e.__options.minIntersection&&c.geo.window.size.height-c.geo.origin.windowOffset.top>=e.__options.minIntersection:h.whole=!1),g.push(h),h.whole)j=!0;else if("natural"==h.mode&&(h.fits||h.size.width<=c.geo.available[k][n].width))return!1}})}}),e.__instance._trigger({edit:function(a){g=a},event:b,helper:c,results:g,type:"positionTested"}),g.sort(function(a,b){if(a.whole&&!b.whole)return-1;if(!a.whole&&b.whole)return 1;if(a.whole&&b.whole){var c=e.__options.side.indexOf(a.side),d=e.__options.side.indexOf(b.side);return d>c?-1:c>d?1:"natural"==a.mode?-1:1}if(a.fits&&!b.fits)return-1;if(!a.fits&&b.fits)return 1;if(a.fits&&b.fits){var c=e.__options.side.indexOf(a.side),d=e.__options.side.indexOf(b.side);return d>c?-1:c>d?1:"natural"==a.mode?-1:1}return"document"==a.container&&"bottom"==a.side&&"natural"==a.mode?-1:1}),d=g[0],d.coord={},d.side){case"left":case"right":d.coord.top=Math.floor(d.target-d.size.height/2);break;case"bottom":case"top":d.coord.left=Math.floor(d.target-d.size.width/2)}switch(d.side){case"left":d.coord.left=c.geo.origin.windowOffset.left-d.outerSize.width;break;case"right":d.coord.left=c.geo.origin.windowOffset.right+d.distance.horizontal;break;case"top":d.coord.top=c.geo.origin.windowOffset.top-d.outerSize.height;break;case"bottom":d.coord.top=c.geo.origin.windowOffset.bottom+d.distance.vertical}"window"==d.container?"top"==d.side||"bottom"==d.side?d.coord.left<0?c.geo.origin.windowOffset.right-this.__options.minIntersection>=0?d.coord.left=0:d.coord.left=c.geo.origin.windowOffset.right-this.__options.minIntersection-1:d.coord.left>c.geo.window.size.width-d.size.width&&(c.geo.origin.windowOffset.left+this.__options.minIntersection<=c.geo.window.size.width?d.coord.left=c.geo.window.size.width-d.size.width:d.coord.left=c.geo.origin.windowOffset.left+this.__options.minIntersection+1-d.size.width):d.coord.top<0?c.geo.origin.windowOffset.bottom-this.__options.minIntersection>=0?d.coord.top=0:d.coord.top=c.geo.origin.windowOffset.bottom-this.__options.minIntersection-1:d.coord.top>c.geo.window.size.height-d.size.height&&(c.geo.origin.windowOffset.top+this.__options.minIntersection<=c.geo.window.size.height?d.coord.top=c.geo.window.size.height-d.size.height:d.coord.top=c.geo.origin.windowOffset.top+this.__options.minIntersection+1-d.size.height):(d.coord.left>c.geo.window.size.width-d.size.width&&(d.coord.left=c.geo.window.size.width-d.size.width),d.coord.left<0&&(d.coord.left=0)),e.__sideChange(h,d.side),c.tooltipClone=h[0],c.tooltipParent=e.__instance.option("parent").parent[0],c.mode=d.mode,c.whole=d.whole,c.origin=e.__instance._$origin[0],c.tooltip=e.__instance._$tooltip[0],delete d.container,delete d.fits,delete d.mode,delete d.outerSize,delete d.whole,d.distance=d.distance.horizontal||d.distance.vertical;var l=a.extend(!0,{},d);if(e.__instance._trigger({edit:function(a){d=a},event:b,helper:c,position:l,type:"position"}),e.__options.functionPosition){var m=e.__options.functionPosition.call(e,e.__instance,c,l);m&&(d=m)}i.destroy();var n,o;"top"==d.side||"bottom"==d.side?(n={prop:"left",val:d.target-d.coord.left},o=d.size.width-this.__options.minIntersection):(n={prop:"top",val:d.target-d.coord.top},o=d.size.height-this.__options.minIntersection),n.valo&&(n.val=o);var p;p=c.geo.origin.fixedLineage?c.geo.origin.windowOffset:{left:c.geo.origin.windowOffset.left+c.geo.window.scroll.left,top:c.geo.origin.windowOffset.top+c.geo.window.scroll.top},d.coord={left:p.left+(d.coord.left-c.geo.origin.windowOffset.left),top:p.top+(d.coord.top-c.geo.origin.windowOffset.top)},e.__sideChange(e.__instance._$tooltip,d.side),c.geo.origin.fixedLineage?e.__instance._$tooltip.css("position","fixed"):e.__instance._$tooltip.css("position",""),e.__instance._$tooltip.css({left:d.coord.left,top:d.coord.top,height:d.size.height,width:d.size.width}).find(".tooltipster-arrow").css({left:"",top:""}).css(n.prop,n.val),e.__instance._$tooltip.appendTo(e.__instance.option("parent")),e.__instance._trigger({type:"repositioned",event:b,position:d})},__sideChange:function(a,b){a.removeClass("tooltipster-bottom").removeClass("tooltipster-left").removeClass("tooltipster-right").removeClass("tooltipster-top").addClass("tooltipster-"+b)},__targetFind:function(a){var b={},c=this.__instance._$origin[0].getClientRects();if(c.length>1){var d=this.__instance._$origin.css("opacity");1==d&&(this.__instance._$origin.css("opacity",.99),c=this.__instance._$origin[0].getClientRects(),this.__instance._$origin.css("opacity",1))}if(c.length<2)b.top=Math.floor(a.geo.origin.windowOffset.left+a.geo.origin.size.width/2),b.bottom=b.top,b.left=Math.floor(a.geo.origin.windowOffset.top+a.geo.origin.size.height/2),b.right=b.left;else{var e=c[0];b.top=Math.floor(e.left+(e.right-e.left)/2),e=c.length>2?c[Math.ceil(c.length/2)-1]:c[0],b.right=Math.floor(e.top+(e.bottom-e.top)/2),e=c[c.length-1],b.bottom=Math.floor(e.left+(e.right-e.left)/2),e=c.length>2?c[Math.ceil((c.length+1)/2)-1]:c[c.length-1],b.left=Math.floor(e.top+(e.bottom-e.top)/2)}return b}}}),a}); \ No newline at end of file diff --git a/app/assets/stylesheets/account.scss b/app/assets/stylesheets/account.scss index 3112a95d4f..775a8a89c8 100644 --- a/app/assets/stylesheets/account.scss +++ b/app/assets/stylesheets/account.scss @@ -3,7 +3,9 @@ display: flex; justify-content: center; margin: 30px 0; - +} +.account-page-center svg path{ + fill: var(--primary-color) } .account-page-title{ font-size: 18px; @@ -131,10 +133,6 @@ margin-left: 10px; margin-bottom: 5px; } -svg path{ - fill: var(--primary-color); -} - .account-page-subscribe-button{ border: 1px solid var(--primary-color); text-decoration: none; diff --git a/app/assets/stylesheets/agents.scss b/app/assets/stylesheets/agents.scss new file mode 100644 index 0000000000..71d3de690a --- /dev/null +++ b/app/assets/stylesheets/agents.scss @@ -0,0 +1,4 @@ +.agents-inputs input { + @extend .form-control !optional; + height: 100% !important; +} \ No newline at end of file diff --git a/app/assets/stylesheets/application.css.scss.erb b/app/assets/stylesheets/application.css.scss.erb old mode 100644 new mode 100755 index d78bb59773..ac85e687da --- a/app/assets/stylesheets/application.css.scss.erb +++ b/app/assets/stylesheets/application.css.scss.erb @@ -20,7 +20,9 @@ *= require thickbox *= require select2 *= require trumbowyg + *= require flag-icon *= require theme-variables + *= require summary */ /* BioPortal */ @@ -41,15 +43,22 @@ @import "ontolobridge"; @import "fair_assement"; @import "instances_table"; -@import "file_uploader"; @import "register"; @import "lostpassword"; @import "flatpickr/dist/themes/light"; +@import "tom-select/dist/scss/tom-select"; +@import "tippy.js/dist/tippy"; +@import 'tippy.js/themes/light-border'; @import "feedback"; @import "login"; @import "components/index"; @import "account"; - +@import "agents"; +@import "upload_ontology"; +@import "edit-ontology"; +@import "nav_bar"; +@import "ontology_details_header"; +@import "ontology_viewer"; @import "browse"; /* Bootstrap and Font Awesome */ @import "bootstrap"; diff --git a/app/assets/stylesheets/bioportal.scss b/app/assets/stylesheets/bioportal.scss index fa186b2eab..5badfe1aab 100644 --- a/app/assets/stylesheets/bioportal.scss +++ b/app/assets/stylesheets/bioportal.scss @@ -1,6 +1,6 @@ .turbo-progress-bar { height: 5px; - background-color: var(--light-color); + background-color: var(--admin-color); } a{ @@ -23,6 +23,7 @@ body{ .admin-border{ border: 1px solid; + border-radius: 5px; border-color: var(--admin-color) !important; } @@ -30,6 +31,60 @@ body{ background-color: var(--light-color) !important; border-color: var(--admin-color) !important; color: var(--admin-color) !important; + border-radius: 5px; +} + +.container-gradient { + background: linear-gradient(-45deg, var(--admin-color), var(--primary-color), var(--admin-color)); + background-size: 400% 400%; + animation: gradient 15s ease infinite; + .header-component{ + color: white; + } + + .field-description_text{ + color: white !important; + opacity: 0.7; + } + +} + +.disabled-link{ + color: #888888 !important; + span{ + opacity: 0.6; + } + a { + color: #888888 !important; + } + svg path{ + fill: #888888 !important; + } +} +.text-truncate-scroll{ + overflow: scroll; + white-space: nowrap; +} + + +.bg-warning-light{ + background-color: var(--bg-warning-light-color) !important; +} + +.bg-danger-light{ + background-color: var(--bg-danger-light-color) !important; +} + +@keyframes gradient { + 0% { + background-position: 0% 50%; + } + 50% { + background-position: 100% 50%; + } + 100% { + background-position: 0% 50%; + } } #hd { @@ -1163,6 +1218,9 @@ a.truncated_less, a.truncated_more { .highlighted .search_ontology_acronym { color: white; } +.hide { + display: none !important; +} .empty-state { display: none; @@ -1173,9 +1231,13 @@ a.truncated_less, a.truncated_more { } -turbo-frame[busy] .hide-if-loading, .show-if-loading { +turbo-frame[busy] > .hide-if-loading, .show-if-loading { display: none; } turbo-frame[busy] ~ .show-if-loading { display: inline-block; } + +.hide{ + display:none; +} \ No newline at end of file diff --git a/app/assets/stylesheets/browse.scss b/app/assets/stylesheets/browse.scss index 036060f96e..bc031c672d 100644 --- a/app/assets/stylesheets/browse.scss +++ b/app/assets/stylesheets/browse.scss @@ -97,9 +97,8 @@ border-radius: 5px; padding: 15px 20px; margin-bottom: 20px; - display: flex; - justify-content: space-between; position: relative; + box-shadow: rgba(100, 100, 111, 0.08) 0 7px 29px 0; } .browse-ontology-description { @@ -197,7 +196,6 @@ } .browse-uploaded-date { - font-weight: 600; white-space: nowrap; } @@ -296,16 +294,16 @@ .browse-search-bar .browse-format-filter { position: absolute; - margin-left: 557px; + margin-left: 500px; z-index: 2; width: 150px; } .browse-search-bar .browse-sort-by-filter { position: absolute; - margin-left: 692px; + margin-left: 632px; z-index: 2; - width: 135px; + width: 200px; border-radius: 0 14px 14px 0; } @@ -334,8 +332,13 @@ border-radius: 5px; padding: 14px 20px; margin-bottom: 12px; + box-shadow: rgba(100, 100, 111, 0.08) 0 7px 29px 0; +} +.align-alert{ + justify-content: center; + display: flex; } .browse-filter-checks-container { diff --git a/app/assets/stylesheets/components/alert.scss b/app/assets/stylesheets/components/alert.scss new file mode 100644 index 0000000000..118d55fe71 --- /dev/null +++ b/app/assets/stylesheets/components/alert.scss @@ -0,0 +1,84 @@ +.alert-container{ + display: flex; + align-items: center; + padding: 20px; + border-radius: 5px; + + +} + +.alert-container.alert-info-type{ + background-color: var(--bg-info-light-color); +} +.alert-container.alert-warning-type { + background-color: var(--bg-warning-light-color); +} +.alert-container.alert-danger-type { + background-color: var(--bg-danger-light-color); +} +.alert-container.alert-success-type { + background-color: var(--bg-success-light-color); +} + + + + +.alert-message{ + font-size: 16px; + margin: 0 10px; + width: 100%; +} + + + +.alert-message.alert-info-type{ + color: rgb(59, 130, 246); +} +.alert-message.alert-warning-type { + color: rgb(234, 179, 8); +} +.alert-message.alert-danger-type { + color: rgb(239, 68, 68); +} +.alert-message.alert-success-type { + color: rgb(34, 197, 94); +} + + +.alert-icon svg{ + width: 25px; + margin: 0 !important; +} +.alert-icon.alert-info-type svg path{ + fill: rgb(59, 130, 246); +} +.alert-icon.alert-warning-type svg path { + fill: rgb(234, 179, 8); +} +.alert-icon.alert-danger-type svg path { + fill: rgb(239, 68, 68); +} +.alert-icon.alert-success-type svg path { + fill: rgb(34, 197, 94); +} + + +.alert-close svg{ + width: 25px; + cursor: pointer; +} + +.alert-close.alert-info-type svg path{ + fill:rgb(59, 130, 246); +} +.alert-close.alert-warning-type svg path { + fill: rgb(234, 179, 8); +} +.alert-close.alert-danger-type svg path { + fill: rgb(239, 68, 68); +} +.alert-close.alert-success-type svg path { + fill: rgb(34, 197, 94); +} + + diff --git a/app/assets/stylesheets/components/card.scss b/app/assets/stylesheets/components/card.scss new file mode 100644 index 0000000000..825f227cf4 --- /dev/null +++ b/app/assets/stylesheets/components/card.scss @@ -0,0 +1,5 @@ +.summary-card { + border: 1px solid #dfdfdf; + border-radius: 5px; + margin-top: 20px; +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/card_message.scss b/app/assets/stylesheets/components/card_message.scss index 0201775d31..9d3332a1cb 100644 --- a/app/assets/stylesheets/components/card_message.scss +++ b/app/assets/stylesheets/components/card_message.scss @@ -34,6 +34,10 @@ color: #EE404C !important; border: 1px solid #EE404C; } +.card-message-button-warning { + color: #ff6700 !important; + border: 1px solid #ff6700; +} .card-message-has-title{ color: #666666; font-weight: 400; diff --git a/app/assets/stylesheets/components/chip_button.scss b/app/assets/stylesheets/components/chip_button.scss new file mode 100644 index 0000000000..065d0e5422 --- /dev/null +++ b/app/assets/stylesheets/components/chip_button.scss @@ -0,0 +1,27 @@ +.chip_button_container { + background-color: #f6f6f6; + padding: 10px; + border-radius: 5px; + color: #777777 !important; + font-weight: 500; + font-size: 15px; + line-height: 44px; + display: inline; +} + +.chip_button_small{ + font-size: 12px !important; + padding: 5px !important; + line-height: unset !important; +} + +.chip_button_container_clickable { + background-color: var(--light-color); + line-height: 44px; + padding: 10px; + border-radius: 5px; + color: var(--primary-color); + font-weight: 500; + font-size: 15px; + cursor: grab; +} diff --git a/app/assets/stylesheets/components/chips.scss b/app/assets/stylesheets/components/chips.scss index 27c93c8349..ac1a2a939f 100644 --- a/app/assets/stylesheets/components/chips.scss +++ b/app/assets/stylesheets/components/chips.scss @@ -1,4 +1,4 @@ -.chips-container div{ +.chips-container > div{ margin-right: 10px; } @@ -11,6 +11,7 @@ display: none; } + .chips-container div label{ cursor: pointer; } @@ -19,7 +20,8 @@ } .chips-container div label > span{ position: relative; - display: inline-block; + display: flex; + align-items: center; background:white; border: 0.5px solid #BDBDBD; color: #a7a7a7; diff --git a/app/assets/stylesheets/components/circle_progress_bar.scss b/app/assets/stylesheets/components/circle_progress_bar.scss new file mode 100644 index 0000000000..7c5095a649 --- /dev/null +++ b/app/assets/stylesheets/components/circle_progress_bar.scss @@ -0,0 +1,26 @@ +:root { + --circle-progress-bar-width: 50px; + --circle-progress-bar-height: 50px; +} + +.circular-progress { + width: var(--circle-progress-bar-width); + height: var(--circle-progress-bar-height); + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + position: relative; +} +.inner-circle { + position: absolute; + width: 85%; + height: 85%; + border-radius: 50%; +} + +.percentage { + position: relative; + color: rgba(0, 0, 0, 0.8); + margin-bottom: 0; +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/concept_details.scss b/app/assets/stylesheets/components/concept_details.scss new file mode 100644 index 0000000000..47b0eb326b --- /dev/null +++ b/app/assets/stylesheets/components/concept_details.scss @@ -0,0 +1,9 @@ +.concept_details_component .raw-table .dropdown-title-bar p { + color: var(--primary-color); + font-weight: 500; +} + + +.concept_details_component table th { + width: 220px; +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/dropdown.scss b/app/assets/stylesheets/components/dropdown.scss new file mode 100644 index 0000000000..b9c73b7f44 --- /dev/null +++ b/app/assets/stylesheets/components/dropdown.scss @@ -0,0 +1,17 @@ +.dropdown-title-bar { + display: flex; + align-items: center; + font-weight: 550; + justify-content: space-between; + font-size: 16px; + color: #000000; + cursor: pointer; + padding: 0 14px 0 0; +} + +.dropdown-container { + border: 1px solid #dfdfdf; + border-radius: 5px; + margin-bottom: 20px; + margin-top: 20px; +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/field_container.scss b/app/assets/stylesheets/components/field_container.scss new file mode 100644 index 0000000000..cd2b46ea74 --- /dev/null +++ b/app/assets/stylesheets/components/field_container.scss @@ -0,0 +1,23 @@ +.field-container { + margin-bottom: 0.5rem; +} + + +.field-description_text, +.field-description_text a { + color: #888888 !important; + font-size: 15px; + margin-bottom: 0; +} + +.field-description_text { + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: var(--read-more-line-clamp, 5); +} + +.field-normal_text { + font-size: 15px; + color: black; +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/file_input_loader.scss b/app/assets/stylesheets/components/file_input_loader.scss new file mode 100644 index 0000000000..029ab9f710 --- /dev/null +++ b/app/assets/stylesheets/components/file_input_loader.scss @@ -0,0 +1,54 @@ +.file_uploader { + color: #D7D7EF; + font-family: 'Lato', sans-serif; + border: 1px dashed #CFCFCF; + border-radius: 5px; +} + +.file-message { + display: flex; + margin-top: 10px; + font-size: 12px; + color: #888888; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.file_uploader>h2 { + margin: 50px 0; +} + +.file-drop-area { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + width: 100%; + padding: 25px; + transition: 0.2s; + position: relative; +} + +.choose-file-button { + flex-shrink: 0; + background-color: rgba(255, 255, 255, 0.04); + border: 1px solid rgba(255, 255, 255, 0.1); + border-radius: 3px; + padding: 8px 15px; + margin-right: 10px; + font-size: 12px; + text-transform: uppercase; +} + +.file-input { + height: 100%; + width: 100%; + cursor: pointer; + opacity: 0; + position: absolute; +} + +.file-drop-area svg path { + fill: #CECECE; +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/header.scss b/app/assets/stylesheets/components/header.scss new file mode 100644 index 0000000000..ed81527881 --- /dev/null +++ b/app/assets/stylesheets/components/header.scss @@ -0,0 +1,16 @@ +.header-component { + display: flex; + align-items: center; + margin-bottom: 5px; + font-weight: 550; + justify-content: space-between; + font-size: 16px; + color: #000000; + cursor: pointer; + width: 100%; + padding: 14px 20px; + position: relative; + p { + margin-bottom: 0; + } +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/image.scss b/app/assets/stylesheets/components/image.scss new file mode 100644 index 0000000000..97414ab031 --- /dev/null +++ b/app/assets/stylesheets/components/image.scss @@ -0,0 +1,22 @@ +.image-container { + position: relative; + .image-content{ + width: 100%; + object-fit: scale-down; + margin-bottom: 30px; + } + .loop_icon { + position: absolute; + width: 50px; + background-color: white; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.08); + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + height: 50px; + padding: 10px; + bottom: 0; + right: 0; + } +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/index.scss b/app/assets/stylesheets/components/index.scss index c61d4d8dcc..7ea4777c1d 100644 --- a/app/assets/stylesheets/components/index.scss +++ b/app/assets/stylesheets/components/index.scss @@ -1,2 +1,28 @@ @import 'chips'; -@import 'card_message' \ No newline at end of file +@import 'card_message'; +@import "notification"; +@import 'chip_button'; +@import 'rounded_button'; +@import 'summary_section'; +@import 'dropdown'; +@import 'field_container'; +@import 'modal'; +@import 'search_input'; +@import 'nested_form'; +@import 'circle_progress_bar'; +@import 'input_field'; +@import 'file_input_loader'; +@import 'text_area_field'; +@import 'regular_button'; +@import 'tabs_container'; +@import 'pill_tabs_container'; +@import 'outline_tabs_container'; +@import 'pill_button'; +@import "switch"; +@import "table"; +@import "concept_details"; +@import "card"; +@import "header"; +@import "image"; +@import "alert"; +@import "progress_pages"; diff --git a/app/assets/stylesheets/components/input_field.scss b/app/assets/stylesheets/components/input_field.scss new file mode 100644 index 0000000000..9b80f4e54a --- /dev/null +++ b/app/assets/stylesheets/components/input_field.scss @@ -0,0 +1,95 @@ +.input-field-component { + width: 100%; + font-size: 13px; + padding: 10px; + border: 1px solid #BDBDBD; + border-radius: 5px; + outline: none; + resize: none; +} + +.input-field-component:focus { + border: 1px solid var(--primary-color); +} + +.text-input-label { + font-size: 14px; + color: #666666; + margin-bottom: 5px; + img { + width: 15px; + height: 15px; + vertical-align: text-bottom; + } +} + +.text-input-error-text { + font-size: 12px; + color: var(--error-color) +} + +.text-input-helper-text { + font-size: 12px; + color: #666666; + margin-top: 5px; +} + +.ts-control { + padding: 12px; + border-radius: 5px; + border-color: #BDBDBD; +} + +.ts-dropdown-content .option { + padding: 12px; +} + +.ts-dropdown .active { + background-color: #f8f8f8; + +} + +.ts-dropdown { + margin: 0; + color: #666666; +} + +.chosen-container { + padding: 0; + border-radius: 5px; +} + +.ts-wrapper.single .ts-control:after { + border-color: #343a40 transparent transparent; + border-style: solid; + border-width: 5px 5px 0; + content: " "; + display: block; + height: 0; + margin-top: -3px; + position: absolute; + right: calc(0.75rem + 5px); + top: 50%; + width: 0; +} + +.ts-wrapper.multi .ts-control>div{ + border-radius: 5px; + font-size: 11px; + padding: 2px 0 4px 6px; + color: #888888; +} + +.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove{ + border-left: none; + color: #888888 !important; + margin-left: 0; +} + +.ts-wrapper.plugin-remove_button .item .remove:hover { + background: unset; +} + +.has-items .ts-control > input { + width: unset !important; +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/modal.scss b/app/assets/stylesheets/components/modal.scss new file mode 100644 index 0000000000..2997e12e74 --- /dev/null +++ b/app/assets/stylesheets/components/modal.scss @@ -0,0 +1,20 @@ +.modal-content{ + border-radius: 20px !important; +} + +.modal-title { + text-align: center; + flex: 1px; +} + +.close { + margin-left: 0px; + &:focus{ + outline: none; + } +} + +.shape { + border-radius: 50% !important; + width: 35px; +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/nested_form.scss b/app/assets/stylesheets/components/nested_form.scss new file mode 100644 index 0000000000..7cd1bf4264 --- /dev/null +++ b/app/assets/stylesheets/components/nested_form.scss @@ -0,0 +1,55 @@ +.nested-form-input-container .titles{ + display: flex; + font-size: 14px; + color: #666666; + margin-bottom: 5px; + width: 90%; + img { + width: 15px; + height: 15px; + vertical-align: text-bottom; + } +} + + +.nested-form-input-container input:focus{ + border: 1px solid var(--primary-color) !important; +} + +.nested-form-input-container .delete{ + display: flex; + border: 1px dashed #BDBDBD; + justify-content: center; + align-items: center; + height: 43px; + width: 43px; + border-radius: 5px; + cursor: pointer; +} + +.nested-form-input-container .add-another-object{ + border: 1px dashed #BDBDBD; + border-radius: 5px; + display: flex; + justify-content: center; + align-items: center; + padding: 10px; + cursor: pointer; + margin-top: 10px; +} +.nested-form-input-container svg path{ + fill: #DADADA; +} +.nested-form-input-container .add-another-object div{ + color: #DADADA; + margin-left: 10px; +} + + + + + + + + + diff --git a/app/assets/stylesheets/components/notification.scss b/app/assets/stylesheets/components/notification.scss new file mode 100644 index 0000000000..fafecc1900 --- /dev/null +++ b/app/assets/stylesheets/components/notification.scss @@ -0,0 +1,146 @@ +.notification { + display: flex; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 50; + padding: 1.5rem 1rem; + justify-content: center; + align-items: flex-end; + pointer-events: none; + transition-property: background-color, border-color, color, fill, stroke, opacity, box-shadow, transform; + transition-duration: 1000ms; + transform: translateX(1rem); + opacity: 0; + @media (min-width: 640px) { + padding: 4rem 1.5rem 1.5rem; + justify-content: flex-end; + align-items: flex-start; + } +} + + +.notification-inner { + overflow: hidden; + padding: 1rem; + background-color: #ffffff; + width: 100%; + max-width: 24rem; + border-radius: 0.5rem; + pointer-events: auto; + box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); +} + +.notification-content { + display: flex; + align-items: flex-start; +} + +.notification-content svg { + width: 1.5rem; + height: 1.5rem; +} + +.notification-text { + padding-top: 0.125rem; + margin-left: 0.75rem; + flex: 1 1 0; + width: 0; +} + +.notification-text p:first-of-type { + color: #111827; + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 500; +} + +.notification-text p:last-of-type { + margin-top: 0.25rem; + color: #6B7280; + font-size: 0.875rem; + line-height: 1.25rem; +} + +.notification-close { + display: inline-flex; + background-color: #ffffff; + color: #9CA3AF; + border: none; + cursor: pointer; +} + +.notification-close svg { + height: 1rem; + outline: none; +} + +.type-success path { + fill: #14a38c; +} + +.type-error { + path:first-of-type { + fill: #f44336; + } + + path { + fill: white; + } +} + +.type-alert path { + fill: #edb464; +} + + +.slide-in-right { + animation-name: slide-in-right; + animation-duration: 0.5s; + animation-delay: 0.5s; + animation-timing-function: cubic-bezier(0.250, 0.460, 0.450, 0.940); + animation-fill-mode: forwards; +} + + +.slide-in-out-right { + animation-name: slide-in-right, slide-out-right; + animation-duration: 0.5s, 0.5s; + animation-delay: 0.5s, 5s; + animation-timing-function: cubic-bezier(0.250, 0.460, 0.450, 0.940), cubic-bezier(0.550, 0.085, 0.680, 0.530); + animation-fill-mode: forwards, forwards; +} + + +@keyframes slide-in-right { + 0% { + transform: translateX(1rem); + opacity: 0; + } + 50% { + opacity: 0.4; + } + 100% { + transform: translateX(0); + opacity: 1; + } +} + +@keyframes slide-out-right { + 0% { + transform: translateX(0); + opacity: 1; + } + 50% { + opacity: 0.4; + } + 100% { + transform: translateX(1rem); + opacity: 0; + } +} + + + diff --git a/app/assets/stylesheets/components/outline_tabs_container.scss b/app/assets/stylesheets/components/outline_tabs_container.scss new file mode 100644 index 0000000000..76c390d92a --- /dev/null +++ b/app/assets/stylesheets/components/outline_tabs_container.scss @@ -0,0 +1,27 @@ + +.outline-tabs{ + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem 0.25rem 0 0; + padding-top: 1rem; +} +.outline-tabs .tab-items .nav-item{ + margin-right: 0; + +} + +.outline-tabs .tab-items .nav-item.active a{ + color: var(--primary-color) !important; +} + +.outline-tabs .nav-item .tab-link{ + display: block; + padding: 0 1rem 0.2rem 1rem; +} + +.outline-tabs + .tab-content { + .tab-pane{ + border: 1px solid rgba(0, 0, 0, 0.125); + border-top: none ; + border-radius: 0 0 0.25rem 0.25rem; + } +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/pill_button.scss b/app/assets/stylesheets/components/pill_button.scss new file mode 100644 index 0000000000..10641b357b --- /dev/null +++ b/app/assets/stylesheets/components/pill_button.scss @@ -0,0 +1,32 @@ +.pill-button { + color: var(--primary-color); + font-size: 15px; + display: flex; + align-items: center; + border: 1px solid var(--primary-color); + border-radius: 32px; + padding: 10px 20px; + cursor: pointer; + transition: background-color ease 0.3s; + white-space: nowrap; + background-color: transparent; + &:focus{ + outline: none; + } +} + +.pill-button:hover { + background-color: var(--primary-color); + color: white !important; + a { + color: white !important; + } +} + +.pill-button:hover svg path { + fill: white; +} + +.pill-button svg { + margin-right: 10px; +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/pill_tabs_container.scss b/app/assets/stylesheets/components/pill_tabs_container.scss new file mode 100644 index 0000000000..e03697544c --- /dev/null +++ b/app/assets/stylesheets/components/pill_tabs_container.scss @@ -0,0 +1,22 @@ +.pill-tabs-container { + display: flex; + justify-content: space-between; +} + +.pill-tabs-container .tab-items{ + margin-bottom: 10px; +} + +.pill-tabs-container .nav-item { + display: block; + padding: 0.2rem 1rem; +} + +.pill-tabs-container .nav-item.active { + border-radius: 5px; + background-color: var(--primary-color); + color: white !important; + a { + color: white !important; + } +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/primary_button.scss b/app/assets/stylesheets/components/primary_button.scss new file mode 100644 index 0000000000..5e534fecdb --- /dev/null +++ b/app/assets/stylesheets/components/primary_button.scss @@ -0,0 +1,101 @@ +.button-container{ + width: 100%; +} +.primary-button { + width: 100%; + display: flex; + justify-content: center; + align-items: center; + font-size: 16px; + color: white; + height: 60px; + background-color: var(--primary-color); + border: none; + border-radius: 9px; + transition: background-color ease 0.3s; +} +.primary-button:hover { + background-color: var(--hover-color); + cursor: pointer; +} + + +.animation-container{ + width: 100%; + height: 60px; + font-size: 16px; + background-color: var(--hover-color); + border: none; + border-radius: 9px; + justify-content: center; + align-items: center; + display: none; + +} +.lds-ellipsis { + display: inline-block; + position: relative; + margin-top: 50px; + width: 80px; + height: 80px; + transform: scale(0.7); +} + +.lds-ellipsis div { + position: absolute; + width: 13px; + height: 13px; + border-radius: 50%; + background: white; + animation-timing-function: cubic-bezier(0, 1, 1, 0); +} + +.lds-ellipsis div:nth-child(1) { + left: 8px; + animation: lds-ellipsis1 0.6s infinite; +} + +.lds-ellipsis div:nth-child(2) { + left: 8px; + animation: lds-ellipsis2 0.6s infinite; +} + +.lds-ellipsis div:nth-child(3) { + left: 32px; + animation: lds-ellipsis2 0.6s infinite; +} + +.lds-ellipsis div:nth-child(4) { + left: 56px; + animation: lds-ellipsis3 0.6s infinite; +} + +@keyframes lds-ellipsis1 { + 0% { + transform: scale(0); + } + + 100% { + transform: scale(1); + } +} + +@keyframes lds-ellipsis3 { + 0% { + transform: scale(1); + } + + 100% { + transform: scale(0); + } +} + +@keyframes lds-ellipsis2 { + 0% { + transform: translate(0, 0); + } + + 100% { + transform: translate(24px, 0); + } +} diff --git a/app/assets/stylesheets/components/progress_pages.scss b/app/assets/stylesheets/components/progress_pages.scss new file mode 100644 index 0000000000..6e3f6cff5c --- /dev/null +++ b/app/assets/stylesheets/components/progress_pages.scss @@ -0,0 +1,118 @@ +.progress-pages-container { + display: flex; + align-items: center; + margin-top: 20px; + margin-bottom: 50px; + width: 100%; +} + +.progress-pages-container hr { + flex-grow: 1; + border: 1px solid #D9D9D9; + margin: 0; +} + +.progress-pages-container hr.active { + border: 1px solid var(--primary-color); +} + +.progress-pages-container .progress-item { + position: relative; + & > div { + position: absolute; + top: -13px; + left: -13px; + display: flex; + flex-direction: column; + align-items: center; + } +} + +.progress-pages-container .progress-item:first-of-type { + & > div { + align-items: start; + left: 0; + } +} + +.progress-pages-container .progress-item:last-of-type { + & > div { + align-items: end; + left: -23px; + } +} + +.progress-pages-container .progress-item div .active:nth-child(2) { + color: var(--primary-color); + font-weight: 600; +} + +.progress-pages-container .progress-item div span:nth-child(2) { + position: absolute; + font-size: 12px; + top: 33px; + white-space: nowrap; + color: #A9A9A9; +} + +.progress-pages-container .progress-content .active:nth-child(2) { + color: var(--primary-color); + font-weight: 600; +} + +.progress-pages-container .progress-content div:nth-child(2) { + position: absolute; + right: -38px; + top: 33px; + +} + + + +.outlined-checked-circle { + border: 2px solid var(--primary-color) !important; + background-color: var(--primary-color) !important; + display: flex; + align-items: center; + justify-content: center; +} + +.outlined-active-circle { + border: 2px solid var(--primary-color) !important; +} + +.outlined-circle { + border: 1px solid #D9D9D9; + border-radius: 13px; + height: 26px; + width: 26px; + background-color: white; + +} + +.outlined-checked-circle img { + display: block !important; +} + +.outlined-active-circle img { + display: none; +} + +.outlined-circle img { + display: none; +} + + + +.progress-pages-actions { + display: flex; + justify-content: flex-end; + margin-top: 20px; +} + +.progress-pages-next-button { + margin-left: 25px; +} + + + diff --git a/app/assets/stylesheets/components/regular_button.scss b/app/assets/stylesheets/components/regular_button.scss new file mode 100644 index 0000000000..40e0132773 --- /dev/null +++ b/app/assets/stylesheets/components/regular_button.scss @@ -0,0 +1,213 @@ +.regular-button { + width: 100%; + display: flex; + justify-content: center; + align-items: center; + font-size: 16px; + height: 60px; + border-radius: 9px; + padding: 0 30px; +} +.regular-button.slim{ + border-radius: 5px; + height: 42px; + padding: 0 15px; +} + +.primary-button { + color: white !important; + background-color: var(--primary-color); + border: none; + transition: background-color ease 0.3s; +} +.primary-button:focus { + outline: none; +} + +.primary-button:hover { + background-color: var(--hover-color); + cursor: pointer; +} + +.primary-button.disabled-button{ + background-color: #a3a3a3; +} +.primary-button.disabled-button:hover { + background-color: #a3a3a3; + cursor:default; +} + +.danger-button.primary-button { + background-color: #F24C3D !important; +} + +.danger-button.primary-button:hover { + background-color: #d74639 !important; +} + +.warning-button.primary-button { + background-color: #F2BE22 !important; +} + +.warning-button.primary-button:hover { + background-color: #dcac1d !important; +} + +.secondary-button { + color: var(--primary-color); + border: 1px solid var(--primary-color); + transition: background-color ease 0.3s; + background-color: rgba(0, 0, 0, 0) !important; +} + +.secondary-button:focus { + outline: none; +} + +.secondary-button:hover { + background-color: var(--primary-color) !important; + cursor: pointer; + color: white !important; + + .secondary-button-icon path { + fill: white; + } +} + +.secondary-button.disabled-button { + border: 1px solid #a3a3a3; + color: #a3a3a3 !important; +} + +.secondary-button.disabled-button:hover { + background-color: rgba(0, 0, 0, 0) !important; + cursor: default; + color: #a3a3a3 !important; +} + +.secondary-button.danger-button { + color: #F24C3D !important; + border: 1px solid #F24C3D; +} +.secondary-button.danger-button:hover { + background-color: #F24C3D !important; + color: white !important; +} +.secondary-button.warning-button { + color: #F2BE22 !important; + border: 1px solid #F2BE22; +} + +.secondary-button.warning-button:hover { + background-color: #dcac1d !important; + color: white !important; +} + +.left-button-icon{ + margin-right: 10px; + margin-bottom: 3px; +} + +.right-button-icon { + margin-left: 10px; + margin-bottom: 3px; +} + +.secondary-button-icon path { + fill: var(--primary-color); +} + +.primary-button-icon path { + fill: white !important; +} + + +.animation-container { + width: 100%; + height: 60px; + font-size: 16px; + background-color: var(--hover-color); + border: none; + border-radius: 9px; + justify-content: center; + align-items: center; + display: none; +} +.animation-container.slim { + border-radius: 5px; + height: 42px; +} +.animation-container.danger-button{ + background-color: #d74639 !important; +} +.animation-container.warning-button{ + background-color: #dcac1d !important; +} + +.lds-ellipsis { + display: inline-block; + position: relative; + margin-top: 50px; + width: 80px; + height: 80px; + transform: scale(0.7); +} + +.lds-ellipsis div { + position: absolute; + width: 13px; + height: 13px; + border-radius: 50%; + background: white; + animation-timing-function: cubic-bezier(0, 1, 1, 0); +} + +.lds-ellipsis div:nth-child(1) { + left: 8px; + animation: lds-ellipsis1 0.6s infinite; +} + +.lds-ellipsis div:nth-child(2) { + left: 8px; + animation: lds-ellipsis2 0.6s infinite; +} + +.lds-ellipsis div:nth-child(3) { + left: 32px; + animation: lds-ellipsis2 0.6s infinite; +} + +.lds-ellipsis div:nth-child(4) { + left: 56px; + animation: lds-ellipsis3 0.6s infinite; +} + +@keyframes lds-ellipsis1 { + 0% { + transform: scale(0); + } + + 100% { + transform: scale(1); + } +} + +@keyframes lds-ellipsis3 { + 0% { + transform: scale(1); + } + + 100% { + transform: scale(0); + } +} + +@keyframes lds-ellipsis2 { + 0% { + transform: translate(0, 0); + } + + 100% { + transform: translate(24px, 0); + } +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/rounded_button.scss b/app/assets/stylesheets/components/rounded_button.scss new file mode 100644 index 0000000000..41e2b76955 --- /dev/null +++ b/app/assets/stylesheets/components/rounded_button.scss @@ -0,0 +1,17 @@ +.rounded-button { + border: 1px solid var(--primary-color); + display: flex; + align-items: center; + justify-content: center; + right: 40px; + transition: background-color ease 0.3s; +} + +.rounded-button:hover { + background-color: var(--primary-color); + +} + +.rounded-button:hover svg path { + fill: white; +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/search_input.scss b/app/assets/stylesheets/components/search_input.scss new file mode 100644 index 0000000000..8b6ff21388 --- /dev/null +++ b/app/assets/stylesheets/components/search_input.scss @@ -0,0 +1,45 @@ +.search-container{ + display: none; + font-size: 16px; + background: white; + width: 100%; + border-radius: 0 0 14px 14px; + border: none; + box-shadow: 2px 30px 60px rgba(0, 0, 0, 0.1); + position: absolute; +} + +.search-content{ + display: flex; + color: #777777 !important; + justify-content: space-between; + padding: 20px 20px; + cursor: pointer; + border-top: 1px solid #f7f7f7 +} +.search-content:hover{ + background-color: rgba(0, 0, 0, 0.01); +} +.search-content div{ + display: flex; +} +.search-content div img{ + width: 12px; +} +.search-content div p{ + font-weight: 300; + margin-left: 10px; + margin-bottom: 0; +} + +.search-dropdown-active{ + box-shadow: none !important; +} + +.search-element{ + margin-bottom: 0; +} + +.searched-elements{ + margin-bottom: 0; +} diff --git a/app/assets/stylesheets/components/summary_section.scss b/app/assets/stylesheets/components/summary_section.scss new file mode 100644 index 0000000000..0572086653 --- /dev/null +++ b/app/assets/stylesheets/components/summary_section.scss @@ -0,0 +1,12 @@ +.card_title { + display: flex; + font-size: 18px; + margin-bottom: 20px; + + span:nth-child(1){ + text-decoration: underline; + text-underline-offset: 12px; + text-decoration-color: var(--primary-color); + text-decoration-thickness: 2px; + } +} diff --git a/app/assets/stylesheets/components/switch.scss b/app/assets/stylesheets/components/switch.scss new file mode 100644 index 0000000000..b5a91db4d6 --- /dev/null +++ b/app/assets/stylesheets/components/switch.scss @@ -0,0 +1,64 @@ + +.switch-filter{ + display:flex; + align-items: center; + justify-content: space-between; + margin-bottom: 20px; +} +.switch-filter > p, .switch-filter > div{ + font-size: 16px; + color: #666666; + margin-bottom: 0; + margin-right: 10px; +} + + + +/* Toggle switch css */ +.switch { + position: relative; + display: inline-block; + width: 40px; + height: 20px; + margin-bottom: 0; +} +.switch input { + opacity: 0; + width: 0; + height: 0; +} +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: .4s; + transition: .4s; + border-radius: 34px; +} +.slider:before { + position: absolute; + content: ""; + height: 13px; + width: 13px; + left: 4px; + bottom: 4px; + background-color: white; + -webkit-transition: .4s; + transition: .4s; + border-radius: 50%; +} +input:checked + .slider { + background-color: var(--primary-color); +} +input:focus + .slider { + box-shadow: 0 0 1px var(--primary-color); +} +input:checked + .slider:before { + -webkit-transform: translateX(19px); + -ms-transform: translateX(19px); + transform: translateX(19px); +} \ No newline at end of file diff --git a/app/assets/stylesheets/components/table.scss b/app/assets/stylesheets/components/table.scss new file mode 100644 index 0000000000..27869d6eea --- /dev/null +++ b/app/assets/stylesheets/components/table.scss @@ -0,0 +1,37 @@ +.table-content{ + border-collapse: collapse; + width: 100%; + border-spacing: 0; +} + +.table-layout-fixed{ + table-layout: fixed; +} + +.table-content thead th{ + background-color: hsl(0, 0%, 100%); + border-bottom: 1px solid hsl(240, 4%, 85%); + font-weight: 700; + color: hsl(230, 13%, 9%); +} + +.table-content-borderless thead th { + border-bottom: none !important; +} + +.table-content td, .table-content th{ + padding: 0.75rem; + vertical-align: top; +} + + +.table-content-stripped tbody tr:nth-child(odd) { + background-color: #FAFAFA; +} + +.table-content tbody th:first-child { + color: #888888; + font-weight: 400; +} + + diff --git a/app/assets/stylesheets/components/tabs_container.scss b/app/assets/stylesheets/components/tabs_container.scss new file mode 100644 index 0000000000..422a298726 --- /dev/null +++ b/app/assets/stylesheets/components/tabs_container.scss @@ -0,0 +1,57 @@ +.tabs-container { + border-bottom: 1px solid #DFDFDF; + display: flex; + justify-content: space-between; + & > div { + display: flex; + justify-content: space-between; + width: 100%; + } +} + +.tabs-container hr { + border: 1px solid #f3f3f3; + width: 100%; + margin: 0; +} + +.tabs-container .tab-items { + display: flex; + margin: 0; + position: relative; +} + +.tabs-container .tab-items div { + font-size: 16px; + font-weight: 400; + color: #5e5e5e; + margin-right: 50px; + cursor: pointer; + opacity: 60%; + transition: opacity 0.3s ease; + + a { + color: #5e5e5e !important; + } +} + +.tabs-container .tab-items div:hover { + + opacity: 100%; +} + +.tabs-container .tab-items div hr { + display: none; + margin-top: 10px; +} + +.tabs-container .tab-items .active { + font-weight: 500; + opacity: 100%; +} + +.tabs-container .tab-items .active hr { + display: block; + border: 1px solid var(--primary-color); + opacity: 100%; +} diff --git a/app/assets/stylesheets/components/text_area_field.scss b/app/assets/stylesheets/components/text_area_field.scss new file mode 100644 index 0000000000..6f50aa4bc2 --- /dev/null +++ b/app/assets/stylesheets/components/text_area_field.scss @@ -0,0 +1,14 @@ +.text-content { + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: var(--read-more-line-clamp, 5); +} + + +.see_more_text { + color: var(--primary-color); + font-size: 15px; + margin-top: 10px; + text-align: end; +} \ No newline at end of file diff --git a/app/assets/stylesheets/concepts.scss b/app/assets/stylesheets/concepts.scss index 7f3bc860d7..eabea59c86 100644 --- a/app/assets/stylesheets/concepts.scss +++ b/app/assets/stylesheets/concepts.scss @@ -14,11 +14,11 @@ } a.btn.btn-link { - padding: 0; + padding: 0; } } -.concept_details td:nth-child(1) { +.concept_details td:nth-child(2) { white-space: nowrap; } @@ -31,3 +31,122 @@ div.synonym-change-request { div.synonym-change-request button { padding: 0px; } +.nav-link.active{ + border-radius: 5px; +} +.concepts-general-details{ + width: 870px; + border-radius: 5px; + border: 1px solid #DFDFDF; +} +.concepts-nav-item{ + display: flex; + flex-direction: column; + justify-content: center; +} + +.concepts-nav-item a{ + margin: 12px 24px; + color: #888888 !important; + cursor: pointer; +} +.concepts-tabs-container{ + display: flex; + justify-content: space-between; + align-items: center; +} +.concepts-tabs{ + display: flex; + justify-content: space-between; + width: 589px; +} +.concepts-active-tab a{ + font-weight: 600; + color: var(--primary-color) !important; +} +.concepts-active-tab hr{ + margin: 0; + border: 1px solid var(--primary-color); + border-radius: 5px; + display: block !important; + width: 100%; +} +.concepts-nav-item hr{ + margin: 0; + display: none; +} +#concepts-header-line{ + margin: 0; +} +.concepts-json{ + width: 32px; + height: 32px; + border: 1px solid var(--primary-color); + border-radius: 16px; + display: flex; + align-items: center; + justify-content: center; + position: absolute; + right: 40px; + transition: background-color ease 0.3s; +} +.concepts-json:hover{ + background-color: var(--primary-color); + +} +.concepts-json:hover svg path{ + fill: white; +} + +.concepts-content div{ + margin-bottom: 5px; +} +.concepts-raw-data{ + margin-top: 20px; + border-radius: 5px; + border: 1px solid #DFDFDF; + +} +.concepts-raw-title{ + display: flex; + justify-content: space-between; + padding: 12px 24px; + color: #888888; + cursor: pointer; + font-size: 16px; + font-weight: 400; +} +.concepts-raw-title div{ + padding: 10px 0px; +} + +#details_content{ + border: none !important; +} + +#details_content .card{ + border-top: none !important; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +#concept_browser{ + .outline-tabs div, .outline-tabs .tab-items{ + width: 100%; + } + .outline-tabs .tab-items .nav-item { + flex: 1; + } + .outline-tabs .tab-items .nav-item a { + display: flex; + justify-content: center; + svg path { + fill: #5e5e5e !important; + } + } + .outline-tabs .tab-items .nav-item.active a { + svg path { + fill: var(--primary-color) !important; + } + } +} \ No newline at end of file diff --git a/app/assets/stylesheets/edit-ontology.scss b/app/assets/stylesheets/edit-ontology.scss new file mode 100644 index 0000000000..26a6da3acd --- /dev/null +++ b/app/assets/stylesheets/edit-ontology.scss @@ -0,0 +1,146 @@ +.center { + display: flex; + justify-content: center; + margin-top: 50px; +} + +.edit-ontology-container { + padding: 0 50px; + width: 1248px +} + +.edit-ontology-title { + font-size: 18px; + font-weight: bold; +} + +.edit-ontology-title hr { + width: 93px; + border: 1px solid var(--primary-color); + margin: 0; + opacity: 100%; +} + +.edit-ontology-sub-container { + + display: flex; +} + +.edit-ontology-left-column { + border-radius: 5px; + width: 400px; + margin-right: 58px; + +} + +.edit-ontology-left-column { + .nav-pills.disabled a { + color: #888888 !important; + cursor: not-allowed; + } + + .nav-pills:not(.disabled){ + .edit-ontology-tab-item.active { + color: var(--primary-color); + background-color: var(--light-color) !important; + border-left: 3px solid var(--primary-color); + font-weight: 700; + } + + + + .edit-ontology-tab-item:hover { + background-color: #F6F6F6; + } + + } +} + +.edit-ontology-tab-item { + font-size: 14px; + width: 100%; + padding: 10px 15px; + font-weight: 500; + margin: 3px 0; + cursor: pointer; + border-radius: 5px; + transition: background-color ease 0.3s; +} + +.edit-ontology-right-column { + border-radius: 5px; + width: 100%; +} + +.edit-ontology-desc { + font-size: 12px; + color: #777777; + margin: 10px 0; +} + +.edit-ontology-desc a { + text-decoration: none; + color: var(--primary-color); +} + +.edit-ontology-desc a svg { + transform: scale(1.2); +} + +.edit-ontology-left-column input { + border: 1px solid #BDBDBD; + outline: none; + font-size: 14px; + border-radius: 5px; + padding: 10px 15px; + width: 100%; + margin-top: 20px; +} + + + + +.edit-ontology-field div { + font-size: 11px; + color: #666; + +} + +.edit-ontology-field input { + border: 1px solid #BDBDBD; + border-radius: 5px; + font-size: 14px; + padding: 10px 15px; + outline: none; + width: 100%; + margin-top: 5px; + margin-bottom: 20px; +} + +.edit-ontology-field input:focus { + border-color: var(--primary-color); +} + +#edit-ontology-actions-devider { + width: 100%; + border: 1px solid #E9E9E9; + border-radius: 210px; + margin: 20px 0; + opacity: 100%; + +} + +.edit-ontology-actions { + display: flex; + justify-content: flex-end; +} + +.reset-all-button { + margin-right: 25px; + width: 186px; +} + +.save-button { + width: 90px; +} + diff --git a/app/assets/stylesheets/file_uploader.scss b/app/assets/stylesheets/file_uploader.scss deleted file mode 100644 index 96c03f8231..0000000000 --- a/app/assets/stylesheets/file_uploader.scss +++ /dev/null @@ -1,53 +0,0 @@ -.file_uploader { - color: #D7D7EF; - font-family: 'Lato', sans-serif; -} - -.file_uploader > h2 { - margin: 50px 0; -} - - -.file-drop-area { - position: relative; - display: flex; - align-items: center; - width: 450px; - max-width: 100%; - padding: 25px; - border: 1px dashed rgba(255, 255, 255, 0.4); - border-radius: 3px; - transition: 0.2s; - -} - -.choose-file-button { - flex-shrink: 0; - background-color: rgba(255, 255, 255, 0.04); - border: 1px solid rgba(255, 255, 255, 0.1); - border-radius: 3px; - padding: 8px 15px; - margin-right: 10px; - font-size: 12px; - text-transform: uppercase; -} - -.file-message { - font-size: small; - font-weight: 300; - line-height: 1.4; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; -} - -.file-input { - position: absolute; - left: 0; - top: 0; - height: 100%; - width: 100%; - cursor: pointer; - opacity: 0; - -} \ No newline at end of file diff --git a/app/assets/stylesheets/footer.scss b/app/assets/stylesheets/footer.scss index 927971394f..6cdd05791e 100644 --- a/app/assets/stylesheets/footer.scss +++ b/app/assets/stylesheets/footer.scss @@ -1,3 +1,58 @@ -.legal-text { - font-size: 0.9rem; -} \ No newline at end of file +.footer-container{ + display: flex; + justify-content: center; + background-color: var(--primary-color); +} +footer{ + width: 1248px; + background-color: var(--primary-color); + padding: 40px 50px; +} + +.footer-header{ + display: flex; + justify-content: space-between; + margin-bottom: 40px; +} +.footer-logo{ + color: white; + display: flex; + align-items: center; +} +.footer-logo p{ + margin-bottom: 0; + font-weight: 700; + font-size: 18px; + margin-left: 20px; +} +.footer-social-media-links a{ + margin-left: 20px; + svg path { + fill: white; + } +} +.footer-nav-links{ + display: flex; + flex-wrap: wrap; + justify-content: space-between; +} +.footer-nav-links div h2{ + font-size: 21px; + font-weight: 700; + color: white; + margin-bottom: 10px; +} +.footer-nav-links div div{ + display:flex; + flex-direction: column; +} +.footer-nav-links div a{ + font-size: 16px; + font-weight: 400; + color: white !important; + margin-bottom: 10px; + opacity: 60%; +} +.footer-nav-links div a:hover{ + opacity: 100%; +} diff --git a/app/assets/stylesheets/home.scss b/app/assets/stylesheets/home.scss index f26409b717..b4303bebe5 100644 --- a/app/assets/stylesheets/home.scss +++ b/app/assets/stylesheets/home.scss @@ -2,3 +2,476 @@ i.fa.fa-caret-square-o-down { vertical-align: middle; margin-left: 2px; } + + + +.home-header-container{ + height: 310px; +} + +.home-header-background{ + background-color: var(--primary-color);; + width: 100%; + height: 309px; + position: absolute; + z-index: 0; +} + +.home-bubbles{ + display: flex; + justify-content: center; +} +.home-bubble{ + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + background-color: rgba(255, 255, 255, 0.4); + position: absolute; + box-shadow: 2px 30px 60px rgba(0, 0, 0, 0.05); + transform: scale(0.1); + animation: scale-up 1s ease forwards; +} +.home-bubble-one{ + width: 232px; + height: 232px; + border-radius: 116px; + z-index: 1; + margin-left: 622px; +} +.home-bubble-two{ + width: 194px; + height: 194px; + border-radius: 97px; + z-index: 2; + margin-left: 387px; + margin-top: 161px; +} +.home-bubble-three{ + width: 130px; + height: 130px; + border-radius: 65px; + z-index: 3; + margin-left: 656px; + margin-top: 192px; +} +.home-bubble-four{ + width: 70px; + height: 70px; + border-radius: 35px; + z-index: 4; + margin-left: 815px; + margin-top: 189px; + transform: scale(1); + +} + +.home-bubble h5{ + color: white; + font-size: 18px; + margin: 0; + font-weight: 600; +} +.home-bubble p{ + color: white; + font-size: 15px; + margin: 0; +} +.home-random-bubbles{ + position: absolute; + transform: scale(0.1); + animation: scale-up-random 1s ease forwards; +} +.home-header-title-container{ + display: flex; + justify-content: center; +} +.home-header-title{ + position: absolute; + z-index: 4; + width: 500px; + margin-right: 664px; + margin-top: 123px; + opacity: 0; + transform: translateY(-100%); + animation: slide-and-fade 1s ease forwards; +} +.home-header-title h4{ + font-size: 38px; + font-weight: 800; + color: white; +} + +.home-header-title > p{ + font-size: 20px; + font-weight: 400; + color: white; +} + +.home-header-title .search-inputs input{ + font-size: 16px; + outline: none; + padding: 20px; + width: 100%; + height: 100%; + margin-top: 20px; + border-radius: 14px; + border: none; + box-shadow: 2px 30px 60px rgba(0, 0, 0, 0.1); +} +.home-header-title .search-inputs input:focus{ + box-shadow: 2px 30px 60px rgba(0, 0, 0, 0.15); +} + + +.home-body-container{ + display: flex; + flex-direction: column; + align-items: center; +} +.home-section{ + padding: 0 50px; + margin-top: 70px; + width: 1248px; +} +.home-section > h4{ + font-size: 20px; + margin-bottom: 5px; + font-weight: 700; +} + +.home-section-line{ + width: 60px; + margin-top: 3px; + border: 0.5px solid var(--primary-color);; + border-radius: 5px; + margin-bottom: 20px; +} +.home-statistics{ + display: flex; +} +.home-statistics-container{ + border-radius: 8px; + box-shadow: 2px 0px 60px rgba(0, 0, 0, 0.10); + padding: 30px 40px; + +} +.home-statistics-container > div { + display: flex; + align-items: center; + flex-wrap: wrap; +} +.home-agroportal-figures{ + margin-bottom: 20px; +} + +.home-statistics-container > div > p { + font-size: 20px; + font-weight: 600; + margin-left: 18px; + margin-bottom: 0; +} +.home-statistics-item{ + display: flex; + align-items: center; + +} +.home-statistics> :not(:last-child){ + margin-right: 49px; +} +.home-statistics-item hr{ + height: 83px; + width: 0px; + border: 2px solid var(--primary-color);; + border-radius: 5px; + margin-right: 15px; + margin-top: 0; + margin-bottom: 0; +} +.home-statistics-item h4{ + font-size: 30px; + font-weight: 600; + line-height: 1.2; + margin: 0; +} +.home-statistics-item p{ + font-size: 18px; + font-weight: 400; + margin: 0; + color: #888; +} +.home-section > p { + font-size: 16px; + color: #888888; + margin-bottom: 9px; +} +.home-upload-benifits{ + display: flex; + flex-wrap: wrap; +} +.home-upload-benifits div{ + display: flex; + width: 455px; + align-items: flex-start; + margin-right: 57px; + margin-top: 15px +} + +.home-upload-benifits div p{ + margin-left: 17px; + font-size: 16px; + color: #888888; + margin-bottom: 0; +} +.home-upload-benifits div img{ + margin-top: 3px +} +.home-upload-ontology-button{ + margin-top: 30px; + width: fit-content; +} + +.home-upload-icon { + margin-right: 10px; +} + + +.home-recommendations-and-annotations{ + font-size: 20px; + outline: none; + padding: 20px; + width: 100%; + resize: none; + border-radius: 14px; + border: none; + +} +.home-services-buttons{ + background-color: white; + border-radius: 8px; + padding: 20px; + display: flex; + justify-content: flex-end; + align-items: center; +} +.home-card{ + border-radius: 8px; + box-shadow: 2px 30px 60px rgba(0, 0, 0, 0.1); +} +.home-get-annotations{ + cursor: pointer; + color: white; + background-color: var(--primary-color); + display: flex; + width: fit-content; + align-items: center; + padding: 15px 20px; + border-radius: 8px; + margin-left: 10px; + transition: background-color 0.3s ease; +} +.home-get-annotations:hover{ + background-color: var(--hover-color); +} +.home-get-annotations p{ + margin-right: 20px; + margin-bottom: 0; +} +.home-get-recommendations{ + cursor: pointer; + color: var(--primary-color); + display: flex; + width: fit-content; + height: fit-content; + align-items: center; + padding: 15px 20px; + border-radius: 8px; + border: 1px solid var(--primary-color); + transition: background-color 0.3s ease; +} +.home-get-recommendations:hover{ + color: white !important; + background-color: var(--primary-color); +} +.home-get-recommendations:hover .home-play-icon path{ + fill: white; +} +.home-get-recommendations p{ + margin-right: 20px; + margin-bottom: 0; +} +.home-section-sub-sections-container{ + display: flex; + justify-content: space-between; +} +.home-sub-section-left{ + width: 550px; +} +.home-sub-section-right{ + width: 550px; +} +.home-sub-section-left h4, .home-sub-section-right h4{ + font-size: 20px; + margin-bottom: 5px; + font-weight: 700; +} +.home-fair-scores{ + height: 360px; + padding-top: 35px; +} +.home-twitter-news{ + height: 360px; +} +.home-fair-scores a{ + text-decoration: none; + +} +.home-fair-details{ + margin-right: 25px !important; +} +.home-fair-scores div{ + display: flex; + justify-content: flex-end; + align-items: center; + margin-right: 20px; + margin-left: 27px; + margin-bottom: 14px; + color: var(--primary-color); +} +.home-fair-scores div p{ + margin-right: 10px; + margin-bottom: 0; +} +.home-logos{ + height: 138px; + display: flex; + align-items: center; + overflow: auto; + +} +.home-logos img{ + margin-left: 60px; +} + + +.home-support-title{ + display: flex; + justify-content: center; + flex-direction: column; + +} +.home-support-items{ + display: flex; + justify-content: center; + flex-wrap: wrap; + img{ + object-fit: scale-down; + width: 100px; + height: 100px; + } + +} +.home-support-items > *:not(:first-child){ + margin-left: 40px; +} +.home-support-items a{ + margin-bottom: 40px; + opacity: 85%; + transition: opacity 0.3s ease; +} +.home-support-items a:hover{ + opacity: 100%; +} +.home-result-type{ + font-weight: 300; + margin-bottom: 0; +} + +.home-upload-ontology-button path:hover { + fill: white; +} + +.home-searched-ontology{ + margin-bottom: 0; + word-wrap: break-word; + max-width: 400px; + margin-right: 20px; + +} +.align-items{ + display: flex; + align-items: center; +} +.margin-items{ + margin-right: 10px; +} + +.custom-logo-class{ + width: 96px; + height: 96px; + object-fit: scale-down; +} +.fair-scores-badge-section{ + height: 5px !important; +} +.fair-scores-badge-margin{ + margin-right: 10px; + margin-bottom: 20px; + background-color: var(--primary-color) !important; +} + +@keyframes scale-up { + from { transform: scale(0.1); } + to { transform: scale(1); } +} + +@keyframes scale-up-random { + from { transform: scale(0.1); } + to { transform: scale(1.06); } +} + +@keyframes slide-and-fade { + from { opacity: 0; transform: translateY(-100%); } + to { opacity: 1; transform: translateY(0); } +} + +@media (max-width: 1300px) { + .home-section{ + width: 100%; + } + .home-section-sub-sections-container{ + flex-direction: column; + } + .home-random-bubbles{ + display: none; + } + .home-header-title{ + + margin:128px 50px; + width: 500px; + + opacity: 0; + transform: translateY(-100%); + animation: slide-and-fade 1s ease forwards; + } + .home-header-title-container{ + justify-content: start; + } + .home-sub-section-left { + width: 100%; + } + + .home-sub-section-right { + width: 100%; + margin-top: 50px; + } + .home-fair-scores div{ + padding: 0 10%; + } + .home-fair-scores{ + height: unset; + } +} + + + diff --git a/app/assets/stylesheets/login.scss b/app/assets/stylesheets/login.scss index f2d68c91dc..342c754ebd 100644 --- a/app/assets/stylesheets/login.scss +++ b/app/assets/stylesheets/login.scss @@ -1,8 +1,9 @@ .login-form{ - margin-top: 30px; - padding: 37px 41px; - box-shadow: rgba(0, 0, 0, 0.08) 0px 20px 50px; - border-radius: 14px; + margin-top: 30px; + padding: 37px 41px; + box-shadow: rgba(0, 0, 0, 0.08) 0px 20px 50px; + border-radius: 14px; + max-width: 439px; } .login-input{ @@ -41,24 +42,13 @@ text-decoration:none; font-size: 13px; } -.login-button{ - margin-top: 10px; - width: 357px; - font-size: 16px; - color: white; - padding: 17px; - background-color: var(--primary-color); - border: none; - border-radius: 9px; - margin-bottom: 20px; -} -.login-button:hover{ - background-color: var(--hover-color); - cursor: pointer; -} - .dont-have-account{ font-size: 15px; font-weight: 600; text-align: center; } +.login-button-container{ + margin-top: 10px; + margin-bottom: 20px; + width: 357px; +} \ No newline at end of file diff --git a/app/assets/stylesheets/nav_bar.scss b/app/assets/stylesheets/nav_bar.scss new file mode 100644 index 0000000000..fdc92676e7 --- /dev/null +++ b/app/assets/stylesheets/nav_bar.scss @@ -0,0 +1,194 @@ +.nav-container{ + display: flex; + justify-content: center; + background-color: var(--primary-color); +} +.top-nav{ + display: flex !important; + background-color: var(--primary-color); + align-items: center; + justify-content: space-between; + height: 62px; + padding: 8px 42px; + width: 1248px; +} +.nav-responsiveness-container{ + display: flex; + justify-content: space-between; +} +.nav-logo{ + display: flex; + align-items: center; +} +.nav-logo p{ + margin-left: 10px; + color: white; + font-size: 16px; + font-weight: 700; + margin-bottom: 0; +} +.nav-items{ + display: flex; + justify-content: space-between; + align-items:center; + width: 1020px; +} +.nav-items > ul { + display: flex; + list-style: none; + margin-bottom: 0; + padding: 0; +} + +.nav-items > ul > li { + margin-left: 17px; +} + +.nav-items > ul > li > a { + color: white !important; + font-size: 15px; + opacity: 60%; + font-weight: 300; + transition: opacity 0.2s ease-in-out; +} +.nav-items > ul > li > a:hover{ + opacity: 100%; +} +.nav-items > ul > li > a.active{ + opacity: 100%; + font-weight: 500; +} + +.nav-search-container { + width: 50% ; + position: relative; +} +.nav-search-container div > input { + height: 33px; + width: 100%; + outline: none; + opacity: 60%; + border: 1px solid white; + background-color: var(--primary-color) !important; + color: white; + border-radius: 5px; + font-size: 14px; + padding: 0 10px; +} +.nav-search-container div > input:focus{ + opacity: 100%; + border-radius: 5px 5px 0 0; + border: 1px solid white; +} +.nav-search-container div > input::placeholder{ + color: white; + opacity: 60%; +} +.nav-search-container div > input::-ms-input-placeholder{ + color: white; + opacity: 60%; +} + +.nav-search-container .search-container{ + position: absolute; + z-index: 9999; + font-size: 12px !important; + +} + +.nav-language{ + background-color: transparent; + width: 47px; + color: white; + border: none; + outline: none; + cursor: pointer; + +} +.nav-language option{ + background-color: white; + color: black; +} +.nav-items .nav-a{ + padding: 3px 34px; + border: 1px solid white; + border-radius: 5px; + color: white !important; + transition: background-color 0.2s ease-in-out; +} +.nav-items .nav-a:hover{ + background-color: rgba(255, 255, 255, 0.1); +} + +.top-nav .menu-btn i{ + color: #fff; + font-size: 22px; + cursor: pointer; + display: none; +} +.top-nav input[type="checkbox"]{ + display: none; +} + +.top-nav-nav-link{ + color: white !important; + padding: 0 !important; +} + + +@media (max-width: 1300px){ + .top-nav .menu-btn i{ + display: block; + } + #nav-menu:checked ~ .menu-btn i:before{ + content: "\f00d"; + } + .nav-items{ + display: none; + } + .menu-btn{ + position: absolute; + right: 40px; + } + .right-nav-items{ + flex-direction: column; + align-items: baseline !important; + } + .nav-search-container .nav-input{ + margin-bottom: 0 !important; + + } + +} +.top-nav.show-responsive { + display: block !important; + background-color: var(--primary-color); + height: unset; +} + +.top-nav-ul.show-responsive { + display: block; +} + +.nav-items.show-responsive { + flex-direction: column; + width: unset; + display: flex; + align-items: flex-start; +} + +.show-responsive { + margin: 15px 0 !important; +} + +.supportMenuDropdownLink.show-responsive { + margin-bottom: 15px; +} + +.right-nav-items{ + display: flex; + align-items: center; + justify-content: space-between; + width: 50%; + gap: 20px; +} diff --git a/app/assets/stylesheets/ontologies.scss b/app/assets/stylesheets/ontologies.scss index 231642f4ac..494655a31e 100644 --- a/app/assets/stylesheets/ontologies.scss +++ b/app/assets/stylesheets/ontologies.scss @@ -1,21 +1,32 @@ $ont-metadata-bg-color: #e2ebf0; $widget-table-border-color: #EFEFEF; -$ont-show-bg-color: #e9ecef; -.ontologies.show { - background-color: $ont-show-bg-color; - #bd { - background-color: $ont-show-bg-color; +.admin-background{ + a.chip_button_container_clickable{ + color: var(--admin-color) !important; } } -svg path { - fill: var(--primary-color); +.admin-border { + .dropdown-container{ + margin-top: 0 !important; + margin-bottom: 0 !important; + } } +.custom-container { + padding: 1rem; + background-color: #2c3e50; /* Dark gray */ + border-radius: 0.25rem; +} +/* Code block styles */ +.custom-code { + font-family: 'Courier New', monospace; + font-size: 0.875rem; /* 14px */ + color: #fff; +} .ontologies.show .gutter { - background-color: rgba(0, 0, 0, 0.03); background-repeat: no-repeat; background-position: center; @@ -163,10 +174,7 @@ svg path { } } -#ontology_versions td.show_more_subs { - text-align: right; - background-color: white; -} + /************************************ /* Classes pane @@ -180,6 +188,7 @@ svg path { #bd_content .sidebar { overflow-x: auto; white-space: nowrap; + min-width: 35%; } #search_box:focus { @@ -275,4 +284,3 @@ svg path { flex-direction: row; } - diff --git a/app/assets/stylesheets/ontology_details_header.scss b/app/assets/stylesheets/ontology_details_header.scss new file mode 100644 index 0000000000..3f87f50173 --- /dev/null +++ b/app/assets/stylesheets/ontology_details_header.scss @@ -0,0 +1,110 @@ +.ontology-details-header-container{ + padding: 0 50px; + margin: 20px 0; + width: 1248px; +} + +.ontology-details-path{ + display: flex; + color: #888888; + margin-bottom: 20px; +} +.ontology-details-path img{ + margin: 0 12px; +} +.ontology-details-path a{ + text-decoration: underline !important; + color: #888888 !important; +} +.ontology-details-header-sub-container{ + display: flex; + justify-content: space-between; + align-items: center; + position: relative; +} + +.ontology-details-name-bar{ + display: flex; + align-items: center; +} +.ontology-details-name-bar > div{ + font-size: 25px; + font-weight: 700; + margin-right: 10px; +} + +.ontology-details-name-bar > div > span{ + font-size: 17px; + font-weight: 500; +} + +.ontology-details-name-bar .ontology-details-licence{ + display: flex; + align-items: center; + background-color: #F6F6F6; + border-radius: 5px; + padding: 10px 20px; + cursor: pointer; + font-size: 12px; + color: #777777; + font-weight: 600; +} +.ontology-details-name-bar .ontology-details-licence svg{ + margin-left: 10px; + transform: scale(1.2); +} +.ontology-details-last-update{ + display: flex; + align-items: center; + font-size: 14px; + color: #888888; +} +.ontology-details-last-update img{ + margin-right: 10px; +} +.ontology-details-header-right-container{ + display: flex; +} +.ontology-details-watch-button { + color: var(--primary-color); + font-size: 15px; + display: flex; + align-items: center; + border: 1px solid var(--primary-color); + border-radius: 32px; + padding: 10px 20px; + cursor: pointer; + margin-left: 10px; + transition: background-color ease 0.3s; + white-space: nowrap; +} + + +.ontology-details-watch-button:hover,.ontology-details-edit-button:hover { + background-color: var(--primary-color); + color: white !important; + +} + +.ontology-details-watch-button:hover svg path,.ontology-details-edit-button:hover svg path { + fill: white; +} + +.ontology-details-watch-button svg { + margin-right: 10px; +} + +.ontology-details-edit-button { + display: flex; + justify-content: center; + align-items: center; + border: 1px solid var(--primary-color); + border-radius: 22.5px; + padding: 10px; + height: 45px; + width: 45px; + cursor: pointer; + transition: background-color ease 0.3s; +} + + diff --git a/app/assets/stylesheets/ontology_viewer.scss b/app/assets/stylesheets/ontology_viewer.scss new file mode 100644 index 0000000000..47aeb30640 --- /dev/null +++ b/app/assets/stylesheets/ontology_viewer.scss @@ -0,0 +1,25 @@ +.ontology-viewer{ + svg path { + fill: var(--primary-color); + } +} +.ontologies-tabs-container { + & > .tabs-container { + justify-content: center; + } + + & > .tabs-container > div { + width: 1248px; + padding: 0 50px; + } + + & > .tab-content { + display: flex; + justify-content: center; + + & > .tab-pane { + width: 1248px; + padding: 0 50px; + } + } +} \ No newline at end of file diff --git a/app/assets/stylesheets/register.scss b/app/assets/stylesheets/register.scss index 6db658b3a4..2f9f1b305a 100644 --- a/app/assets/stylesheets/register.scss +++ b/app/assets/stylesheets/register.scss @@ -83,22 +83,10 @@ margin-top: 14px; } -.register-button{ +.register-button-container{ margin-top: 20px; - width: 363px; - font-size: 16px; - color: white; - padding: 17px; - background-color: var(--primary-color); - border: none; - border-radius: 9px; - } -.register-button:hover{ - background-color: var(--hover-color); - cursor: pointer; -} #user_register_mail_list{ margin-top: 14px; accent-color: #8E8E8E; diff --git a/app/assets/stylesheets/submissions.scss b/app/assets/stylesheets/submissions.scss index 41e12ec325..47dc99d2c4 100644 --- a/app/assets/stylesheets/submissions.scss +++ b/app/assets/stylesheets/submissions.scss @@ -8,4 +8,11 @@ div#contacts div.contact.col-sm-10.offset-sm-2 { #submissionLocation small.form-text { margin-bottom: 0.5em; +} +.tab-content{ + position: relative; +} +.spacer { + margin-left: 10px; + margin-top: -13px; } \ No newline at end of file diff --git a/app/assets/stylesheets/summary.scss.erb b/app/assets/stylesheets/summary.scss.erb new file mode 100644 index 0000000000..7773b9e56b --- /dev/null +++ b/app/assets/stylesheets/summary.scss.erb @@ -0,0 +1,216 @@ +.summary-page-center { + display: flex; + justify-content: center; + flex-wrap: wrap; + .flag-icon{ + width: 30px; + height: 30px; + } +} + +.summary-page-center .card_title{ + margin-top: 40px; +} + +.summary-page-first-row { + width: 670px; + margin-right: 20px; +} + +.summary-page-second-row { + width: 450px; +} + +@media (max-width: 1288px) { + .summary-page-first-row { + width: 100%; + margin: 0; + padding: 0 20px; + } + .summary-page-second-row { + width: 100%; + margin: 0; + padding: 0 20px; + } +} + +.show > .btn-outline-primary.dropdown-toggle { + background-color: var(--primary-color) !important; + color: white !important; +} + + +.description_text, +.description_text a { + color: #888888 !important; + font-size: 15px; + overflow: hidden; + margin-bottom: 0; + flex: 1; + min-width: 500px; +} + + +.creation_info { + display: flex; + flex-wrap: wrap; + align-items: center; +} + + + +.date_creation_text { + font-size: 14px; + font-weight: 700; +} + +.creator_text { + color: #888888; + font-size: 14px; + margin-left: 5px; + font-weight: 550; + margin-top: 15px; + width: 300px; +} + +.creation_text { + font-size: 16px; +} + + +.icons_container { + margin-top: 10px; + justify-content: space-evenly; + display: flex; + padding: 0 20px; + svg path { + fill: var(--primary-color); + } +} + + + +.disabled-icon { + pointer-events: none; + svg path { + fill: rgba(0, 0, 0, 0.1) !important; + } +} + +.normal_text { + font-size: 15px; + color: black; + word-wrap: break-word; +} + + + +.metrics { + display: flex; + justify-content: space-between; +} + +.metrics-container { + border-radius: 8px; + height: 90px; + box-shadow: 2px 0px 60px rgba(0, 0, 0, 0.1); + padding: 71px 40px; + margin-top: 10px; +} + +.metrics-container > div { + display: flex; + align-items: center; + margin-bottom: 20px; +} + +.metrics-container > div > p { + font-size: 20px; + font-weight: 600; + margin-left: 18px; +} + +.metrics-item { + display: flex; + align-items: center; +} + +.metrics-item hr { + height: 73px; + width: 0px; + border: 2px solid var(--primary-color); + border-radius: 5px; + margin-right: 15px; +} + +.metrics-item h4 { + font-size: 30px; + font-weight: 600; + line-height: 1.2; + color: #000000; +} + +.metrics-item p, +.metrics-item a { + font-size: 18px; + font-weight: 400; +} + + +#ontology_versions .show_more_subs td { + text-align: right; +} + + + +div.vis-network div.vis-navigation { + div.vis-button.vis-up{ + background-color: var(--primary-color); + -webkit-mask-image: url(asset-path('icons/circle-up.svg')); + mask-image: url(asset-path('icons/circle-up.svg')); + background-image: none !important; + } + div.vis-button.vis-down{ + background-color: var(--primary-color); + -webkit-mask-image: url(asset-path('icons/circle-down.svg')); + mask-image: url(asset-path('icons/circle-down.svg')); + background-image: none !important; + } + + div.vis-button.vis-left{ + background-color: var(--primary-color); + -webkit-mask-image: url(asset-path('icons/circle-left.svg')); + mask-image: url(asset-path('icons/circle-left.svg')); + background-image: none !important; + } + + div.vis-button.vis-right{ + background-color: var(--primary-color); + -webkit-mask-image: url(asset-path('icons/circle-right.svg')); + mask-image: url(asset-path('icons/circle-right.svg')); + background-image: none !important; + } + + div.vis-button.vis-zoomIn{ + background-color: var(--primary-color); + -webkit-mask-image: url(asset-path('icons/zoom-in.svg')); + mask-image: url(asset-path('icons/zoom-in.svg')); + background-image: none !important; + } + + div.vis-button.vis-zoomOut{ + background-color: var(--primary-color); + -webkit-mask-image: url(asset-path('icons/zoom-out.svg')); + mask-image: url(asset-path('icons/zoom-out.svg')); + background-image: none !important; + } + + div.vis-button.vis-zoomExtends{ + background-color: var(--primary-color); + -webkit-mask-image: url(asset-path('icons/zoom-center.svg')); + mask-image: url(asset-path('icons/zoom-center.svg')); + background-image: none !important; + } +} + + diff --git a/app/assets/stylesheets/theme-variables.scss.erb b/app/assets/stylesheets/theme-variables.scss.erb index 4a7c79a68d..5f9ba8ae4d 100644 --- a/app/assets/stylesheets/theme-variables.scss.erb +++ b/app/assets/stylesheets/theme-variables.scss.erb @@ -1,30 +1,58 @@ <%# This file contains all the color themes of ontoportal alliance%> -<% if (ui_theme = $UI_THEME.to_s.parameterize).present? && File.exists?(Rails.root.join('app', 'assets', 'stylesheets', 'themes', ui_theme)) +<% if (ui_theme = $UI_THEME.to_s.parameterize) case ui_theme when "agroportal" %> :root{ - --primary-color: #31B404; - --hover-color: #40C811; + --primary-color: #3CB371; + --hover-color: #41C67C; --secondary-color: #ffc107; + --light-color: #F1FAED; + --admin-color: #145FF4; + --error-color: #EB4335; } <% when "stageportal" %> :root{ - --primary-color: #76A7CC; - --hover-color: #6B96B7; + --primary-color: #3CB371; + --hover-color: #41C67C; --secondary-color: #ffc107; + --admin-color: #145FF4; + --light-color: #F1F6FA; + --error-color: #EB4335; } <% when "bioportal" %> :root{ --primary-color: #76A7CC; --hover-color: #6B96B7; --secondary-color: #ffc107; + --light-color: #F0F5F6; + --admin-color: #145FF4; } - <% when "ontoportal" %> + + <% when "ontoportal" , "testportal" %> :root{ - --primary-color: #6E98A2; - --hover-color: #7BABB6; + --primary-color: #5499a4; + --hover-color: #6B96B7; --secondary-color: #ffc107; + --admin-color: #145FF4; + --light-color: #F1F6FA; + --error-color: #EB4335; } <%# Here to add a new theme ... %> <% end %> <% end %> + + + +// common variables +:root{ + --container-max-width: 1248px; + --bg-info-light-color: rgba(59, 130, 246, 0.1); + --bg-danger-light-color: rgba(239, 68, 68, 0.1); + --bg-warning-light-color: rgba(234, 179, 8, 0.1); + --bg-success-light-color: rgba(34, 197, 94, 0.1); +} + + + + + diff --git a/app/assets/stylesheets/themes/agroportal/main.scss b/app/assets/stylesheets/themes/agroportal/main.scss index 4ada63be65..1a58350cb1 100644 --- a/app/assets/stylesheets/themes/agroportal/main.scss +++ b/app/assets/stylesheets/themes/agroportal/main.scss @@ -1,6 +1,6 @@ -$color-primary: #31B404; +$color-primary: #3CB371; $color-secondary: #EFFFEF; -$color-links: #215B04; +$color-links: #3CB371; $color-warning: #ffc107; @import "../lirmm/main"; @import "search"; \ No newline at end of file diff --git a/app/assets/stylesheets/themes/lirmm/bootstrap_overrides.scss b/app/assets/stylesheets/themes/lirmm/bootstrap_overrides.scss index 6ddd0549b1..b64901b6a6 100644 --- a/app/assets/stylesheets/themes/lirmm/bootstrap_overrides.scss +++ b/app/assets/stylesheets/themes/lirmm/bootstrap_overrides.scss @@ -8,6 +8,10 @@ a { a i { color: $color-primary; } +.text-primary { + color: $color-primary !important; +} + .btn-info, .btn-outline-primary:hover, .btn-primary , .nav-pills .nav-link.active{ background-color: $color-primary !important; diff --git a/app/assets/stylesheets/themes/lirmm/flags32.scss b/app/assets/stylesheets/themes/lirmm/flags32.scss deleted file mode 100644 index 2a7323d7c1..0000000000 --- a/app/assets/stylesheets/themes/lirmm/flags32.scss +++ /dev/null @@ -1,245 +0,0 @@ -.f32 .flag{display:inline-block;height:32px;width:32px;vertical-align:text-top;line-height:32px;background-image: image-url('flags32.png');background-repeat:no-repeat;} -.f32 ._African_Union{background-position:0 -32px;} -.f32 ._Arab_League{background-position:0 -64px;} -.f32 ._ASEAN{background-position:0 -96px;} -.f32 ._CARICOM{background-position:0 -128px;} -.f32 ._CIS{background-position:0 -160px;} -.f32 ._Commonwealth{background-position:0 -192px;} -.f32 ._England{background-position:0 -224px;} -.f32 ._European_Union{background-position:0 -256px;} -.f32 ._Islamic_Conference{background-position:0 -288px;} -.f32 ._Kosovo{background-position:0 -320px;} -.f32 ._NATO{background-position:0 -352px;} -.f32 ._Northern_Cyprus{background-position:0 -384px;} -.f32 ._Northern_Ireland{background-position:0 -416px;} -.f32 ._Olimpic_Movement{background-position:0 -448px;} -.f32 ._OPEC{background-position:0 -480px;} -.f32 ._Red_Cross{background-position:0 -512px;} -.f32 ._Scotland{background-position:0 -544px;} -.f32 ._Somaliland{background-position:0 -576px;} -.f32 ._Tibet{background-position:0 -608px;} -.f32 ._United_Nations{background-position:0 -640px;} -.f32 ._Wales{background-position:0 -672px;} -.f32 .ad{background-position:0 -704px;} -.f32 .ae{background-position:0 -736px;} -.f32 .af{background-position:0 -768px;} -.f32 .ag{background-position:0 -800px;} -.f32 .ai{background-position:0 -832px;} -.f32 .al{background-position:0 -864px;} -.f32 .am{background-position:0 -896px;} -.f32 .an{background-position:0 -928px;} -.f32 .ao{background-position:0 -960px;} -.f32 .aq{background-position:0 -992px;} -.f32 .ar{background-position:0 -1024px;} -.f32 .as{background-position:0 -1056px;} -.f32 .at{background-position:0 -1088px;} -.f32 .au{background-position:0 -1120px;} -.f32 .aw{background-position:0 -1152px;} -.f32 .az{background-position:0 -1184px;} -.f32 .ba{background-position:0 -1216px;} -.f32 .bb{background-position:0 -1248px;} -.f32 .bd{background-position:0 -1280px;} -.f32 .be{background-position:0 -1312px;} -.f32 .bf{background-position:0 -1344px;} -.f32 .bg{background-position:0 -1376px;} -.f32 .bh{background-position:0 -1408px;} -.f32 .bi{background-position:0 -1440px;} -.f32 .bj{background-position:0 -1472px;} -.f32 .bm{background-position:0 -1504px;} -.f32 .bn{background-position:0 -1536px;} -.f32 .bo{background-position:0 -1568px;} -.f32 .br{background-position:0 -1600px;} -.f32 .bs{background-position:0 -1632px;} -.f32 .bt{background-position:0 -1664px;} -.f32 .bw{background-position:0 -1696px;} -.f32 .by{background-position:0 -1728px;} -.f32 .bz{background-position:0 -1760px;} -.f32 .ca{background-position:0 -1792px;} -.f32 .cd{background-position:0 -1824px;} -.f32 .cf{background-position:0 -1856px;} -.f32 .cg{background-position:0 -1888px;} -.f32 .ch{background-position:0 -1920px;} -.f32 .ci{background-position:0 -1952px;} -.f32 .ck{background-position:0 -1984px;} -.f32 .cl{background-position:0 -2016px;} -.f32 .cm{background-position:0 -2048px;} -.f32 .cn{background-position:0 -2080px;} -.f32 .co{background-position:0 -2112px;} -.f32 .cr{background-position:0 -2144px;} -.f32 .cu{background-position:0 -2176px;} -.f32 .cv{background-position:0 -2208px;} -.f32 .cy{background-position:0 -2240px;} -.f32 .cz{background-position:0 -2272px;} -.f32 .de{background-position:0 -2304px;} -.f32 .dj{background-position:0 -2336px;} -.f32 .dk{background-position:0 -2368px;} -.f32 .dm{background-position:0 -2400px;} -.f32 .do{background-position:0 -2432px;} -.f32 .dz{background-position:0 -2464px;} -.f32 .ec{background-position:0 -2496px;} -.f32 .ee{background-position:0 -2528px;} -.f32 .eg{background-position:0 -2560px;} -.f32 .eh{background-position:0 -2592px;} -.f32 .er{background-position:0 -2624px;} -.f32 .es{background-position:0 -2656px;} -.f32 .et{background-position:0 -2688px;} -.f32 .fi{background-position:0 -2720px;} -.f32 .fj{background-position:0 -2752px;} -.f32 .fm{background-position:0 -2784px;} -.f32 .fo{background-position:0 -2816px;} -.f32 .fr{background-position:0 -2848px;} -.f32 .ga{background-position:0 -2880px;} -.f32 .gb{background-position:0 -2912px;} -.f32 .gd{background-position:0 -2944px;} -.f32 .ge{background-position:0 -2976px;} -.f32 .gg{background-position:0 -3008px;} -.f32 .gh{background-position:0 -3040px;} -.f32 .gi{background-position:0 -3072px;} -.f32 .gl{background-position:0 -3104px;} -.f32 .gm{background-position:0 -3136px;} -.f32 .gn{background-position:0 -3168px;} -.f32 .gp{background-position:0 -3200px;} -.f32 .gq{background-position:0 -3232px;} -.f32 .gr{background-position:0 -3264px;} -.f32 .gt{background-position:0 -3296px;} -.f32 .gu{background-position:0 -3328px;} -.f32 .gw{background-position:0 -3360px;} -.f32 .gy{background-position:0 -3392px;} -.f32 .hk{background-position:0 -3424px;} -.f32 .hn{background-position:0 -3456px;} -.f32 .hr{background-position:0 -3488px;} -.f32 .ht{background-position:0 -3520px;} -.f32 .hu{background-position:0 -3552px;} -.f32 .id{background-position:0 -3584px;} -.f32 .mc{background-position:0 -3584px;} -.f32 .ie{background-position:0 -3616px;} -.f32 .il{background-position:0 -3648px;} -.f32 .im{background-position:0 -3680px;} -.f32 .in{background-position:0 -3712px;} -.f32 .iq{background-position:0 -3744px;} -.f32 .ir{background-position:0 -3776px;} -.f32 .is{background-position:0 -3808px;} -.f32 .it{background-position:0 -3840px;} -.f32 .je{background-position:0 -3872px;} -.f32 .jm{background-position:0 -3904px;} -.f32 .jo{background-position:0 -3936px;} -.f32 .jp{background-position:0 -3968px;} -.f32 .ke{background-position:0 -4000px;} -.f32 .kg{background-position:0 -4032px;} -.f32 .kh{background-position:0 -4064px;} -.f32 .ki{background-position:0 -4096px;} -.f32 .km{background-position:0 -4128px;} -.f32 .kn{background-position:0 -4160px;} -.f32 .kp{background-position:0 -4192px;} -.f32 .kr{background-position:0 -4224px;} -.f32 .kw{background-position:0 -4256px;} -.f32 .ky{background-position:0 -4288px;} -.f32 .kz{background-position:0 -4320px;} -.f32 .la{background-position:0 -4352px;} -.f32 .lb{background-position:0 -4384px;} -.f32 .lc{background-position:0 -4416px;} -.f32 .li{background-position:0 -4448px;} -.f32 .lk{background-position:0 -4480px;} -.f32 .lr{background-position:0 -4512px;} -.f32 .ls{background-position:0 -4544px;} -.f32 .lt{background-position:0 -4576px;} -.f32 .lu{background-position:0 -4608px;} -.f32 .lv{background-position:0 -4640px;} -.f32 .ly{background-position:0 -4672px;} -.f32 .ma{background-position:0 -4704px;} -.f32 .md{background-position:0 -4736px;} -.f32 .me{background-position:0 -4768px;} -.f32 .mg{background-position:0 -4800px;} -.f32 .mh{background-position:0 -4832px;} -.f32 .mk{background-position:0 -4864px;} -.f32 .ml{background-position:0 -4896px;} -.f32 .mm{background-position:0 -4928px;} -.f32 .mn{background-position:0 -4960px;} -.f32 .mo{background-position:0 -4992px;} -.f32 .mq{background-position:0 -5024px;} -.f32 .mr{background-position:0 -5056px;} -.f32 .ms{background-position:0 -5088px;} -.f32 .mt{background-position:0 -5120px;} -.f32 .mu{background-position:0 -5152px;} -.f32 .mv{background-position:0 -5184px;} -.f32 .mw{background-position:0 -5216px;} -.f32 .mx{background-position:0 -5248px;} -.f32 .my{background-position:0 -5280px;} -.f32 .mz{background-position:0 -5312px;} -.f32 .na{background-position:0 -5344px;} -.f32 .nc{background-position:0 -5376px;} -.f32 .ne{background-position:0 -5408px;} -.f32 .ng{background-position:0 -5440px;} -.f32 .ni{background-position:0 -5472px;} -.f32 .nl{background-position:0 -5504px;} -.f32 .no{background-position:0 -5536px;} -.f32 .np{background-position:0 -5568px;} -.f32 .nr{background-position:0 -5600px;} -.f32 .nz{background-position:0 -5632px;} -.f32 .om{background-position:0 -5664px;} -.f32 .pa{background-position:0 -5696px;} -.f32 .pe{background-position:0 -5728px;} -.f32 .pf{background-position:0 -5760px;} -.f32 .pg{background-position:0 -5792px;} -.f32 .ph{background-position:0 -5824px;} -.f32 .pk{background-position:0 -5856px;} -.f32 .pl{background-position:0 -5888px;} -.f32 .pr{background-position:0 -5920px;} -.f32 .ps{background-position:0 -5952px;} -.f32 .pt{background-position:0 -5984px;} -.f32 .pw{background-position:0 -6016px;} -.f32 .py{background-position:0 -6048px;} -.f32 .qa{background-position:0 -6080px;} -.f32 .re{background-position:0 -6112px;} -.f32 .ro{background-position:0 -6144px;} -.f32 .rs{background-position:0 -6176px;} -.f32 .ru{background-position:0 -6208px;} -.f32 .rw{background-position:0 -6240px;} -.f32 .sa{background-position:0 -6272px;} -.f32 .sb{background-position:0 -6304px;} -.f32 .sc{background-position:0 -6336px;} -.f32 .sd{background-position:0 -6368px;} -.f32 .se{background-position:0 -6400px;} -.f32 .sg{background-position:0 -6432px;} -.f32 .si{background-position:0 -6464px;} -.f32 .sk{background-position:0 -6496px;} -.f32 .sl{background-position:0 -6528px;} -.f32 .sm{background-position:0 -6560px;} -.f32 .sn{background-position:0 -6592px;} -.f32 .so{background-position:0 -6624px;} -.f32 .sr{background-position:0 -6656px;} -.f32 .st{background-position:0 -6688px;} -.f32 .sv{background-position:0 -6720px;} -.f32 .sy{background-position:0 -6752px;} -.f32 .sz{background-position:0 -6784px;} -.f32 .tc{background-position:0 -6816px;} -.f32 .td{background-position:0 -6848px;} -.f32 .tg{background-position:0 -6880px;} -.f32 .th{background-position:0 -6912px;} -.f32 .tj{background-position:0 -6944px;} -.f32 .tl{background-position:0 -6976px;} -.f32 .tm{background-position:0 -7008px;} -.f32 .tn{background-position:0 -7040px;} -.f32 .to{background-position:0 -7072px;} -.f32 .tr{background-position:0 -7104px;} -.f32 .tt{background-position:0 -7136px;} -.f32 .tv{background-position:0 -7168px;} -.f32 .tw{background-position:0 -7200px;} -.f32 .tz{background-position:0 -7232px;} -.f32 .ua{background-position:0 -7264px;} -.f32 .ug{background-position:0 -7296px;} -.f32 .us{background-position:0 -7328px;} -.f32 .uy{background-position:0 -7360px;} -.f32 .uz{background-position:0 -7392px;} -.f32 .va{background-position:0 -7424px;} -.f32 .vc{background-position:0 -7456px;} -.f32 .ve{background-position:0 -7488px;} -.f32 .vg{background-position:0 -7520px;} -.f32 .vi{background-position:0 -7552px;} -.f32 .vn{background-position:0 -7584px;} -.f32 .vu{background-position:0 -7616px;} -.f32 .ws{background-position:0 -7648px;} -.f32 .ye{background-position:0 -7680px;} -.f32 .za{background-position:0 -7712px;} -.f32 .zm{background-position:0 -7744px;} -.f32 .zw{background-position:0 -7744px;} \ No newline at end of file diff --git a/app/assets/stylesheets/themes/lirmm/main.scss b/app/assets/stylesheets/themes/lirmm/main.scss index e50dcf48d1..53ba749a4f 100644 --- a/app/assets/stylesheets/themes/lirmm/main.scss +++ b/app/assets/stylesheets/themes/lirmm/main.scss @@ -2,18 +2,11 @@ @import "annotator"; @import "app"; @import "bootstrap_overrides"; -@import "flags32"; @import "jqcloud"; @import "landscape"; @import "ontologies"; @import "recommender"; @import "search"; -@import "tooltipster.bundle.min"; -@import "plugins/tooltipster/sideTip/themes/tooltipster-sideTip-borderless.min"; -@import "plugins/tooltipster/sideTip/themes/tooltipster-sideTip-light.min"; -@import "plugins/tooltipster/sideTip/themes/tooltipster-sideTip-noir.min"; -@import "plugins/tooltipster/sideTip/themes/tooltipster-sideTip-punk.min"; -@import "plugins/tooltipster/sideTip/themes/tooltipster-sideTip-shadow.min"; /************************************ @@ -241,22 +234,3 @@ div.logos a { } } -/************************************ - * FOOTER -************************************/ -footer, .footer { - background-color: $color-secondary !important; - position: relative !important; -} - -footer img { - height: 32px; -} - -footer a.logo.connect img { - margin-right: 10px; -} - -.legal-text { - font-size: 0.9rem; -} diff --git a/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-borderless.min.scss b/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-borderless.min.scss deleted file mode 100644 index 19408cb1e8..0000000000 --- a/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-borderless.min.scss +++ /dev/null @@ -1 +0,0 @@ -.tooltipster-sidetip.tooltipster-borderless .tooltipster-box{border:none;background:#1b1b1b;background:rgba(10,10,10,.9)}.tooltipster-sidetip.tooltipster-borderless.tooltipster-bottom .tooltipster-box{margin-top:8px}.tooltipster-sidetip.tooltipster-borderless.tooltipster-left .tooltipster-box{margin-right:8px}.tooltipster-sidetip.tooltipster-borderless.tooltipster-right .tooltipster-box{margin-left:8px}.tooltipster-sidetip.tooltipster-borderless.tooltipster-top .tooltipster-box{margin-bottom:8px}.tooltipster-sidetip.tooltipster-borderless .tooltipster-arrow{height:8px;margin-left:-8px;width:16px}.tooltipster-sidetip.tooltipster-borderless.tooltipster-left .tooltipster-arrow,.tooltipster-sidetip.tooltipster-borderless.tooltipster-right .tooltipster-arrow{height:16px;margin-left:0;margin-top:-8px;width:8px}.tooltipster-sidetip.tooltipster-borderless .tooltipster-arrow-background{display:none}.tooltipster-sidetip.tooltipster-borderless .tooltipster-arrow-border{border:8px solid transparent}.tooltipster-sidetip.tooltipster-borderless.tooltipster-bottom .tooltipster-arrow-border{border-bottom-color:#1b1b1b;border-bottom-color:rgba(10,10,10,.9)}.tooltipster-sidetip.tooltipster-borderless.tooltipster-left .tooltipster-arrow-border{border-left-color:#1b1b1b;border-left-color:rgba(10,10,10,.9)}.tooltipster-sidetip.tooltipster-borderless.tooltipster-right .tooltipster-arrow-border{border-right-color:#1b1b1b;border-right-color:rgba(10,10,10,.9)}.tooltipster-sidetip.tooltipster-borderless.tooltipster-top .tooltipster-arrow-border{border-top-color:#1b1b1b;border-top-color:rgba(10,10,10,.9)}.tooltipster-sidetip.tooltipster-borderless.tooltipster-bottom .tooltipster-arrow-uncropped{top:-8px}.tooltipster-sidetip.tooltipster-borderless.tooltipster-right .tooltipster-arrow-uncropped{left:-8px} \ No newline at end of file diff --git a/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-light.min.scss b/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-light.min.scss deleted file mode 100644 index 298c9d4a55..0000000000 --- a/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-light.min.scss +++ /dev/null @@ -1 +0,0 @@ -.tooltipster-sidetip.tooltipster-light .tooltipster-box{border-radius:3px;border:1px solid #ccc;background:#ededed}.tooltipster-sidetip.tooltipster-light .tooltipster-content{color:#666}.tooltipster-sidetip.tooltipster-light .tooltipster-arrow{height:9px;margin-left:-9px;width:18px}.tooltipster-sidetip.tooltipster-light.tooltipster-left .tooltipster-arrow,.tooltipster-sidetip.tooltipster-light.tooltipster-right .tooltipster-arrow{height:18px;margin-left:0;margin-top:-9px;width:9px}.tooltipster-sidetip.tooltipster-light .tooltipster-arrow-background{border:9px solid transparent}.tooltipster-sidetip.tooltipster-light.tooltipster-bottom .tooltipster-arrow-background{border-bottom-color:#ededed;top:1px}.tooltipster-sidetip.tooltipster-light.tooltipster-left .tooltipster-arrow-background{border-left-color:#ededed;left:-1px}.tooltipster-sidetip.tooltipster-light.tooltipster-right .tooltipster-arrow-background{border-right-color:#ededed;left:1px}.tooltipster-sidetip.tooltipster-light.tooltipster-top .tooltipster-arrow-background{border-top-color:#ededed;top:-1px}.tooltipster-sidetip.tooltipster-light .tooltipster-arrow-border{border:9px solid transparent}.tooltipster-sidetip.tooltipster-light.tooltipster-bottom .tooltipster-arrow-border{border-bottom-color:#ccc}.tooltipster-sidetip.tooltipster-light.tooltipster-left .tooltipster-arrow-border{border-left-color:#ccc}.tooltipster-sidetip.tooltipster-light.tooltipster-right .tooltipster-arrow-border{border-right-color:#ccc}.tooltipster-sidetip.tooltipster-light.tooltipster-top .tooltipster-arrow-border{border-top-color:#ccc}.tooltipster-sidetip.tooltipster-light.tooltipster-bottom .tooltipster-arrow-uncropped{top:-9px}.tooltipster-sidetip.tooltipster-light.tooltipster-right .tooltipster-arrow-uncropped{left:-9px} \ No newline at end of file diff --git a/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-noir.min.scss b/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-noir.min.scss deleted file mode 100644 index 39f4ca388f..0000000000 --- a/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-noir.min.scss +++ /dev/null @@ -1 +0,0 @@ -.tooltipster-sidetip.tooltipster-noir .tooltipster-box{border-radius:0;border:3px solid #000;background:#fff}.tooltipster-sidetip.tooltipster-noir .tooltipster-content{color:#000}.tooltipster-sidetip.tooltipster-noir .tooltipster-arrow{height:11px;margin-left:-11px;width:22px}.tooltipster-sidetip.tooltipster-noir.tooltipster-left .tooltipster-arrow,.tooltipster-sidetip.tooltipster-noir.tooltipster-right .tooltipster-arrow{height:22px;margin-left:0;margin-top:-11px;width:11px}.tooltipster-sidetip.tooltipster-noir .tooltipster-arrow-background{border:11px solid transparent}.tooltipster-sidetip.tooltipster-noir.tooltipster-bottom .tooltipster-arrow-background{border-bottom-color:#fff;top:4px}.tooltipster-sidetip.tooltipster-noir.tooltipster-left .tooltipster-arrow-background{border-left-color:#fff;left:-4px}.tooltipster-sidetip.tooltipster-noir.tooltipster-right .tooltipster-arrow-background{border-right-color:#fff;left:4px}.tooltipster-sidetip.tooltipster-noir.tooltipster-top .tooltipster-arrow-background{border-top-color:#fff;top:-4px}.tooltipster-sidetip.tooltipster-noir .tooltipster-arrow-border{border-width:11px}.tooltipster-sidetip.tooltipster-noir.tooltipster-bottom .tooltipster-arrow-uncropped{top:-11px}.tooltipster-sidetip.tooltipster-noir.tooltipster-right .tooltipster-arrow-uncropped{left:-11px} \ No newline at end of file diff --git a/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-punk.min.scss b/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-punk.min.scss deleted file mode 100644 index 6702cf5572..0000000000 --- a/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-punk.min.scss +++ /dev/null @@ -1 +0,0 @@ -.tooltipster-sidetip.tooltipster-punk .tooltipster-box{border-radius:5px;border:none;border-bottom:3px solid #f71169;background:#2a2a2a}.tooltipster-sidetip.tooltipster-punk.tooltipster-top .tooltipster-box{margin-bottom:7px}.tooltipster-sidetip.tooltipster-punk .tooltipster-content{color:#fff;padding:8px 16px}.tooltipster-sidetip.tooltipster-punk .tooltipster-arrow-background{display:none}.tooltipster-sidetip.tooltipster-punk.tooltipster-bottom .tooltipster-arrow-border{border-bottom-color:#2a2a2a}.tooltipster-sidetip.tooltipster-punk.tooltipster-left .tooltipster-arrow-border{border-left-color:#2a2a2a}.tooltipster-sidetip.tooltipster-punk.tooltipster-right .tooltipster-arrow-border{border-right-color:#2a2a2a}.tooltipster-sidetip.tooltipster-punk.tooltipster-top .tooltipster-arrow-border{border-top-color:#f71169} \ No newline at end of file diff --git a/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-shadow.min.scss b/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-shadow.min.scss deleted file mode 100644 index 7d92926def..0000000000 --- a/app/assets/stylesheets/themes/lirmm/plugins/tooltipster/sideTip/themes/tooltipster-sideTip-shadow.min.scss +++ /dev/null @@ -1 +0,0 @@ -.tooltipster-sidetip.tooltipster-shadow .tooltipster-box{border:none;border-radius:5px;background:#fff;box-shadow:0 0 10px 6px rgba(0,0,0,.1)}.tooltipster-sidetip.tooltipster-shadow.tooltipster-bottom .tooltipster-box{margin-top:6px}.tooltipster-sidetip.tooltipster-shadow.tooltipster-left .tooltipster-box{margin-right:6px}.tooltipster-sidetip.tooltipster-shadow.tooltipster-right .tooltipster-box{margin-left:6px}.tooltipster-sidetip.tooltipster-shadow.tooltipster-top .tooltipster-box{margin-bottom:6px}.tooltipster-sidetip.tooltipster-shadow .tooltipster-content{color:#8d8d8d}.tooltipster-sidetip.tooltipster-shadow .tooltipster-arrow{height:6px;margin-left:-6px;width:12px}.tooltipster-sidetip.tooltipster-shadow.tooltipster-left .tooltipster-arrow,.tooltipster-sidetip.tooltipster-shadow.tooltipster-right .tooltipster-arrow{height:12px;margin-left:0;margin-top:-6px;width:6px}.tooltipster-sidetip.tooltipster-shadow .tooltipster-arrow-background{display:none}.tooltipster-sidetip.tooltipster-shadow .tooltipster-arrow-border{border:6px solid transparent}.tooltipster-sidetip.tooltipster-shadow.tooltipster-bottom .tooltipster-arrow-border{border-bottom-color:#fff}.tooltipster-sidetip.tooltipster-shadow.tooltipster-left .tooltipster-arrow-border{border-left-color:#fff}.tooltipster-sidetip.tooltipster-shadow.tooltipster-right .tooltipster-arrow-border{border-right-color:#fff}.tooltipster-sidetip.tooltipster-shadow.tooltipster-top .tooltipster-arrow-border{border-top-color:#fff}.tooltipster-sidetip.tooltipster-shadow.tooltipster-bottom .tooltipster-arrow-uncropped{top:-6px}.tooltipster-sidetip.tooltipster-shadow.tooltipster-right .tooltipster-arrow-uncropped{left:-6px} \ No newline at end of file diff --git a/app/assets/stylesheets/themes/lirmm/tooltipster.bundle.min.scss b/app/assets/stylesheets/themes/lirmm/tooltipster.bundle.min.scss deleted file mode 100644 index d8f30feec9..0000000000 --- a/app/assets/stylesheets/themes/lirmm/tooltipster.bundle.min.scss +++ /dev/null @@ -1 +0,0 @@ -.tooltipster-fall,.tooltipster-grow.tooltipster-show{-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1);-moz-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-ms-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-o-transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-base{display:flex;pointer-events:none;position:absolute}.tooltipster-box{flex:1 1 auto}.tooltipster-content{box-sizing:border-box;max-height:100%;max-width:100%;overflow:auto}.tooltipster-ruler{bottom:0;left:0;overflow:hidden;position:fixed;right:0;top:0;visibility:hidden}.tooltipster-fade{opacity:0;-webkit-transition-property:opacity;-moz-transition-property:opacity;-o-transition-property:opacity;-ms-transition-property:opacity;transition-property:opacity}.tooltipster-fade.tooltipster-show{opacity:1}.tooltipster-grow{-webkit-transform:scale(0,0);-moz-transform:scale(0,0);-o-transform:scale(0,0);-ms-transform:scale(0,0);transform:scale(0,0);-webkit-transition-property:-webkit-transform;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform;-webkit-backface-visibility:hidden}.tooltipster-grow.tooltipster-show{-webkit-transform:scale(1,1);-moz-transform:scale(1,1);-o-transform:scale(1,1);-ms-transform:scale(1,1);transform:scale(1,1);-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-swing{opacity:0;-webkit-transform:rotateZ(4deg);-moz-transform:rotateZ(4deg);-o-transform:rotateZ(4deg);-ms-transform:rotateZ(4deg);transform:rotateZ(4deg);-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform;-o-transition-property:-o-transform;-ms-transition-property:-ms-transform;transition-property:transform}.tooltipster-swing.tooltipster-show{opacity:1;-webkit-transform:rotateZ(0);-moz-transform:rotateZ(0);-o-transform:rotateZ(0);-ms-transform:rotateZ(0);transform:rotateZ(0);-webkit-transition-timing-function:cubic-bezier(.23,.635,.495,1);-webkit-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-moz-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-ms-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);-o-transition-timing-function:cubic-bezier(.23,.635,.495,2.4);transition-timing-function:cubic-bezier(.23,.635,.495,2.4)}.tooltipster-fall{-webkit-transition-property:top;-moz-transition-property:top;-o-transition-property:top;-ms-transition-property:top;transition-property:top;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-fall.tooltipster-initial{top:0!important}.tooltipster-fall.tooltipster-dying{-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;-ms-transition-property:all;transition-property:all;top:0!important;opacity:0}.tooltipster-slide{-webkit-transition-property:left;-moz-transition-property:left;-o-transition-property:left;-ms-transition-property:left;transition-property:left;-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1);-webkit-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-moz-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-ms-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);-o-transition-timing-function:cubic-bezier(.175,.885,.32,1.15);transition-timing-function:cubic-bezier(.175,.885,.32,1.15)}.tooltipster-slide.tooltipster-initial{left:-40px!important}.tooltipster-slide.tooltipster-dying{-webkit-transition-property:all;-moz-transition-property:all;-o-transition-property:all;-ms-transition-property:all;transition-property:all;left:0!important;opacity:0}@keyframes tooltipster-fading{0%{opacity:0}100%{opacity:1}}.tooltipster-update-fade{animation:tooltipster-fading .4s}@keyframes tooltipster-rotating{25%{transform:rotate(-2deg)}75%{transform:rotate(2deg)}100%{transform:rotate(0)}}.tooltipster-update-rotate{animation:tooltipster-rotating .6s}@keyframes tooltipster-scaling{50%{transform:scale(1.1)}100%{transform:scale(1)}}.tooltipster-update-scale{animation:tooltipster-scaling .6s}.tooltipster-sidetip .tooltipster-box{background:#565656;border:2px solid #000;border-radius:4px}.tooltipster-sidetip.tooltipster-bottom .tooltipster-box{margin-top:8px}.tooltipster-sidetip.tooltipster-left .tooltipster-box{margin-right:8px}.tooltipster-sidetip.tooltipster-right .tooltipster-box{margin-left:8px}.tooltipster-sidetip.tooltipster-top .tooltipster-box{margin-bottom:8px}.tooltipster-sidetip .tooltipster-content{color:#fff;line-height:18px;padding:6px 14px}.tooltipster-sidetip .tooltipster-arrow{overflow:hidden;position:absolute}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow{height:10px;margin-left:-10px;top:0;width:20px}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow{height:20px;margin-top:-10px;right:0;top:0;width:10px}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow{height:20px;margin-top:-10px;left:0;top:0;width:10px}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow{bottom:0;height:10px;margin-left:-10px;width:20px}.tooltipster-sidetip .tooltipster-arrow-background,.tooltipster-sidetip .tooltipster-arrow-border{height:0;position:absolute;width:0}.tooltipster-sidetip .tooltipster-arrow-background{border:10px solid transparent}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-background{border-bottom-color:#565656;left:0;top:3px}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-background{border-left-color:#565656;left:-3px;top:0}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-background{border-right-color:#565656;left:3px;top:0}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-background{border-top-color:#565656;left:0;top:-3px}.tooltipster-sidetip .tooltipster-arrow-border{border:10px solid transparent;left:0;top:0}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-border{border-bottom-color:#000}.tooltipster-sidetip.tooltipster-left .tooltipster-arrow-border{border-left-color:#000}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-border{border-right-color:#000}.tooltipster-sidetip.tooltipster-top .tooltipster-arrow-border{border-top-color:#000}.tooltipster-sidetip .tooltipster-arrow-uncropped{position:relative}.tooltipster-sidetip.tooltipster-bottom .tooltipster-arrow-uncropped{top:-10px}.tooltipster-sidetip.tooltipster-right .tooltipster-arrow-uncropped{left:-10px} \ No newline at end of file diff --git a/app/assets/stylesheets/themes/ontoportal/main.scss b/app/assets/stylesheets/themes/ontoportal/main.scss index 2130fbeb55..d84ce5ba21 100644 --- a/app/assets/stylesheets/themes/ontoportal/main.scss +++ b/app/assets/stylesheets/themes/ontoportal/main.scss @@ -1,6 +1,6 @@ -$color-primary: rgb(110, 152, 162); -$color-secondary: #F7FDFC; -$color-links: rgb(144, 188, 185); +$color-primary: #3CB371; +$color-secondary: #E4F1FB; +$color-links: #3CB371; $color-warning: #ffc107; @import "../lirmm/main"; @import "search"; \ No newline at end of file diff --git a/app/assets/stylesheets/themes/stageportal/main.scss b/app/assets/stylesheets/themes/stageportal/main.scss index a569926792..d84ce5ba21 100644 --- a/app/assets/stylesheets/themes/stageportal/main.scss +++ b/app/assets/stylesheets/themes/stageportal/main.scss @@ -1,6 +1,6 @@ -$color-primary: #76A7CC; +$color-primary: #3CB371; $color-secondary: #E4F1FB; -$color-links: #76A7CC; +$color-links: #3CB371; $color-warning: #ffc107; @import "../lirmm/main"; @import "search"; \ No newline at end of file diff --git a/app/assets/stylesheets/upload_ontology.scss b/app/assets/stylesheets/upload_ontology.scss new file mode 100644 index 0000000000..978d3997d4 --- /dev/null +++ b/app/assets/stylesheets/upload_ontology.scss @@ -0,0 +1,106 @@ +.upload-ontology-container { + display: flex; + justify-content: center; + padding: 40px 0; + .show { + display: block; + } +} + +.upload-ontology-card { + width: 589px; + border-radius: 14px; + box-shadow: rgba(0, 0, 0, 0.05) 0px 20px 50px; + padding: 20px 40px; + +} + +.upload-ontology-center { + display: flex; + justify-content: center; + flex-direction: column; +} + +.Upload-ontology-title { + font-size: 18px; + display: flex; + font-weight: bold; + flex-direction: column; + align-items: center; +} + +.Upload-ontology-title hr { + border: 1px solid var(--primary-color); + width: 93px; + margin: 0; +} + +.upload-ontology-progress { + display: flex; + align-items: center; + margin-top: 20px; + margin-bottom: 50px; +} + + +.upload-ontology-chips-container{ + display: flex; + flex-wrap: wrap; +} + + +.hide { + display: none; +} + + + +.upload-ontology-desc { + font-size: 12px; + color: #777777; + margin-bottom: 23px; +} + +.upload-ontology-desc a { + text-decoration: none; + color: var(--primary-color); +} +.upload-ontology-desc a svg{ + transform: scale(1.2); +} + + +.upload-ontology-contact .add-another-contact div { + font-size: 11px; + color: #DADADA; + margin-left: 10px; + +} + +.upload-ontology-field-container .location-choice{ + display: flex; + align-items: center; + margin-bottom: 3px; +} + +.upload-ontology-field-container .location-choice .title{ + font-size: 13px; + color: black; + margin-left: 13px; + margin-bottom: 0; + cursor: pointer; +} + +.upload-ontology-field-container > div{ + font-size: 12px; + color: #666666; +} + + +.upload-ontology-input-field-container{ + margin-bottom: 10px; +} + +.upload-ontology-input-field-container .switch-filter p{ + font-size: 12px !important; +} diff --git a/app/components/agent_search_input_component.rb b/app/components/agent_search_input_component.rb new file mode 100644 index 0000000000..f5bfdbae54 --- /dev/null +++ b/app/components/agent_search_input_component.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class AgentSearchInputComponent < ViewComponent::Base + + def initialize(id:, agent_type: nil, name_prefix: nil, parent_id: , show_affiliations: true, edit_on_modal: false, deletable: false) + @id = id + @agent_type = agent_type + @name_prefix = name_prefix + @parent_id = parent_id + @edit_on_modal = edit_on_modal + @show_affiliations = show_affiliations + @deletable = deletable + end +end diff --git a/app/components/agent_search_input_component/agent_search_input_component.html.haml b/app/components/agent_search_input_component/agent_search_input_component.html.haml new file mode 100644 index 0000000000..89f0fdd305 --- /dev/null +++ b/app/components/agent_search_input_component/agent_search_input_component.html.haml @@ -0,0 +1,11 @@ += hidden_field_tag "#{@name_prefix}[#{@id}]" += render SearchInputComponent.new(id: 'agent' + @id, name:'agent' + @id, ajax_url: "/ajax/agents?agent_type=#{@agent_type}&name=", + item_base_url:"/agents/#{@id}?parent_id=#{@parent_id}&edit_on_modal=#{@edit_on_modal}&name_prefix=#{@name_prefix}&deletable=#{@deletable}&agent_id=", id_key: 'id', + use_cache: false, + actions_links: {create_new_agent: {link: "/agents/new?name=&id=#{@id}&parent_id=#{@parent_id}&type=#{@agent_type}&show_affiliations=#{@show_affiliations}&deletable=#{@deletable}&edit_on_modal=#{@edit_on_modal}&name_prefix=#{@name_prefix}[#{@id}]", target:'_self'}}) do |s| + - s.template do + %a{href: "LINK", class: "search-content", 'data-turbo-frame': '_self'} + %p.search-element.home-searched-ontology + NAME (IDENTIFIERS) + %p.home-result-type + TYPE \ No newline at end of file diff --git a/app/components/alert_message_component.rb b/app/components/alert_message_component.rb deleted file mode 100644 index c25efdf683..0000000000 --- a/app/components/alert_message_component.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -class AlertMessageComponent < ViewComponent::Base - include Turbo::FramesHelper - def initialize(id: '', message: nil, type: 'info', closeable: true) - @id = id - @type = "alert-#{type}" - end -end diff --git a/app/components/alert_message_component/alert_message_component.html.haml b/app/components/alert_message_component/alert_message_component.html.haml deleted file mode 100644 index c32ec7d3c7..0000000000 --- a/app/components/alert_message_component/alert_message_component.html.haml +++ /dev/null @@ -1,8 +0,0 @@ -.alert.alert-dismissible.fade.show{:role => "alert", class: "#{@type}", style: "text-align: left;white-space: normal;"} - = @message || content - - - if @closeable - %button.close{"aria-label": "Close", "data-dismiss": "alert", type: "button", style: "background: transparent"} - %span{"aria-hidden" => "true"} × - - \ No newline at end of file diff --git a/app/components/buttons/primary_button_component/primary_button_component.html.haml b/app/components/buttons/primary_button_component/primary_button_component.html.haml new file mode 100644 index 0000000000..154eb2abe3 --- /dev/null +++ b/app/components/buttons/primary_button_component/primary_button_component.html.haml @@ -0,0 +1,23 @@ +- if @type == "submit" + .button-container{onclick: "displayAnimation()", id: "primary-button"} + %input.primary-button{:name => @name, :type => "submit", :value => @value, oncklick: @onclick}/ +- else + .button-container + .primary-button{:name => @name, onclick: "displayAnimation()", id: "primary-button", oncklick: @onclick} + = @value + +.animation-container#loading-animation + .lds-ellipsis + %div + %div + %div + %div + +:javascript + const button = document.getElementById("primary-button") + const loading = document.getElementById("loading-animation") + function displayAnimation(){ + console.log("working") + button.style.display = 'none'; + loading.style.display = 'flex'; + } \ No newline at end of file diff --git a/app/components/buttons/regular_button_component.rb b/app/components/buttons/regular_button_component.rb new file mode 100644 index 0000000000..1e994e8039 --- /dev/null +++ b/app/components/buttons/regular_button_component.rb @@ -0,0 +1,49 @@ +class Buttons::RegularButtonComponent < ViewComponent::Base + renders_one :icon_left + renders_one :icon_right + + def initialize(id: , value:, variant: "primary", color: "normal", href: "", size: "normal", state: "animate", type: 'button') + @id = id + @value = value + @variant = variant + @color = color + @href = href + @size = size + @state = state + @type = type + end + + def button_label + hide_icon_left = icon_left == nil ? "hide" : " " + hide_icon_right = icon_right == nil ? "hide" : " " + content_tag(:span, icon_left, class: "#{@variant}-button-icon left-button-icon #{hide_icon_left}") + content_tag(:div, @value) + content_tag(:span, icon_right, class: "#{@variant}-button-icon right-button-icon #{hide_icon_right}") + end + + def button_elem + slim_class = @size == "slim" ? "slim " : " " + danger_class = @color == "danger" ? "danger-button " : " " + warning_class = @color == "warning" ? "warning-button " : " " + disabled_class = @state == "disabled" ? "disabled-button " : " " + class_style = "#{@variant}-button regular-button " + danger_class + warning_class + disabled_class + slim_class + on_click_event = load_animation? ? "displayAnimation(this, '#{@id}-loading-animation')" : '' + + if link? + link_to(@href, class: class_style, onclick: on_click_event, id: @id) do + button_label + end + else + button_tag(type: @type, class: class_style, onclick: on_click_event, id: @id) do + button_label + end + end + end + + def link? + @href && !@href.empty? + end + + def load_animation? + @state == "animate" + end + +end diff --git a/app/components/buttons/regular_button_component/regular_button_component.html.haml b/app/components/buttons/regular_button_component/regular_button_component.html.haml new file mode 100644 index 0000000000..8b6567203c --- /dev/null +++ b/app/components/buttons/regular_button_component/regular_button_component.html.haml @@ -0,0 +1,11 @@ +.button-container + = button_elem + +- if load_animation? + = render Display::ButtonLoaderComponent.new(id: @id + '-loading-animation', slim: @size.eql?('slim'), color: @color) + :javascript + function displayAnimation(element, loadingId){ + const loading = document.getElementById(loadingId) + element.style.display = 'none'; + loading.style.display = 'flex'; + } \ No newline at end of file diff --git a/app/components/card_message_component.rb b/app/components/card_message_component.rb index 255372d5d2..d0f15d0622 100644 --- a/app/components/card_message_component.rb +++ b/app/components/card_message_component.rb @@ -1,10 +1,10 @@ class CardMessageComponent < ViewComponent::Base - def initialize(title: nil ,message:, button_text: nil, type:) + def initialize(title: nil ,message:, button_text: nil, button_link: "/" ,type:) @title = title @message = message @button_text = button_text @type = type - + @button_link = button_link end def no_title? @@ -21,6 +21,8 @@ def icon "green-check.svg" when "failure" "red-warning.svg" + when "warning" + "orange-warning.svg" end end end diff --git a/app/components/card_message_component/card_message_component.html.haml b/app/components/card_message_component/card_message_component.html.haml index 4eb55723a5..bc7641ee1d 100644 --- a/app/components/card_message_component/card_message_component.html.haml +++ b/app/components/card_message_component/card_message_component.html.haml @@ -13,8 +13,12 @@ - unless no_button? - case @type - when "success" - %a.card-message-button.card-message-button-success{:href => "/"} + %a.card-message-button.card-message-button-success{:href => @button_link} = @button_text - when "failure" - %a.card-message-button.card-message-button-failure{:href => "/"} + %a.card-message-button.card-message-button-failure{:href => @button_link} = @button_text + - when "warning" + %a.card-message-button.card-message-button-warning{:href => @button_link} + = @button_text + diff --git a/app/components/chip_button_component.rb b/app/components/chip_button_component.rb new file mode 100644 index 0000000000..f503dca5aa --- /dev/null +++ b/app/components/chip_button_component.rb @@ -0,0 +1,9 @@ +class ChipButtonComponent < ViewComponent::Base + def initialize(url: nil, text: nil, type: "static", disabled: false, **html_options) + @url = url + @text = text + @type = type + @disabled = disabled + @html_options = html_options.merge({href: @url}) + end +end \ No newline at end of file diff --git a/app/components/chip_button_component/chip_button_component.html.haml b/app/components/chip_button_component/chip_button_component.html.haml new file mode 100644 index 0000000000..c5c76f4a7d --- /dev/null +++ b/app/components/chip_button_component/chip_button_component.html.haml @@ -0,0 +1,6 @@ +- if @type == "static" + %span.chip_button_container{@html_options} + = @text || content +- else + %span.chip_button_container_clickable{@html_options} + = @text || content diff --git a/app/components/chips_component.rb b/app/components/chips_component.rb index ced043f2ed..0e9628bec9 100644 --- a/app/components/chips_component.rb +++ b/app/components/chips_component.rb @@ -1,6 +1,15 @@ class ChipsComponent < ViewComponent::Base - def initialize(name:, value:) + + renders_one :count + def initialize(id:nil, name:, label: nil, value:, checked: false) + @id = id || name @name = name @value = value + @checked = checked + @label = label || @value + end + + def checked? + @checked end end \ No newline at end of file diff --git a/app/components/chips_component/chips_component.html.haml b/app/components/chips_component/chips_component.html.haml index 9f7bd6f8e5..e5ef551b63 100644 --- a/app/components/chips_component/chips_component.html.haml +++ b/app/components/chips_component/chips_component.html.haml @@ -5,4 +5,6 @@ %span %svg.chips-check-icon{:fill => "none", :height => "8", :viewbox => "0 0 10 8", :width => "10", :xmlns => "http://www.w3.org/2000/svg"} %path{:d => "M9.76764 0.232287C9.45824 -0.0775267 8.95582 -0.0773313 8.646 0.232287L3.59787 5.28062L1.35419 3.03696C1.04438 2.72714 0.542174 2.72714 0.23236 3.03696C-0.0774534 3.34677 -0.0774534 3.84897 0.23236 4.15879L3.03684 6.96326C3.19165 7.11807 3.39464 7.19567 3.59765 7.19567C3.80067 7.19567 4.00386 7.11827 4.15867 6.96326L9.76764 1.3541C10.0775 1.0445 10.0775 0.542081 9.76764 0.232287Z"} - = @value + %div + = @label + = count diff --git a/app/components/circle_progress_bar_component.rb b/app/components/circle_progress_bar_component.rb new file mode 100644 index 0000000000..e3e746b605 --- /dev/null +++ b/app/components/circle_progress_bar_component.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class CircleProgressBarComponent < ViewComponent::Base + + def initialize(count: , max: ) + super + @count = count + @max = max + end + + def value + ((@count.to_f / @max) * 100).to_i + end +end diff --git a/app/components/circle_progress_bar_component/circle_progress_bar_component.html.haml b/app/components/circle_progress_bar_component/circle_progress_bar_component.html.haml new file mode 100644 index 0000000000..a319fba659 --- /dev/null +++ b/app/components/circle_progress_bar_component/circle_progress_bar_component.html.haml @@ -0,0 +1,7 @@ +.circular-progress{ data: { controller: 'circle-progress-bar', 'circle-progress-bar': { + 'circle-color-value': 'white', 'percentage-value': value, + 'progress-color-value': "var(--primary-color)", 'bg-color-value': 'white' +}}} + .inner-circle{'data-circle-progress-bar-target': 'innerCircle'} + %p.percentage{'data-circle-progress-bar-target': 'percentage'} + 0% diff --git a/app/components/circle_progress_bar_component/circle_progress_bar_component_controller.js b/app/components/circle_progress_bar_component/circle_progress_bar_component_controller.js new file mode 100644 index 0000000000..932b1d82ad --- /dev/null +++ b/app/components/circle_progress_bar_component/circle_progress_bar_component_controller.js @@ -0,0 +1,37 @@ +import { Controller } from "@hotwired/stimulus" + +// Connects to data-controller="circle-progress-bar" +export default class extends Controller { + static targets = ['percentage', 'innerCircle'] + static values = { + percentage: Number, + progressColor: String, + bgColor: String, + circleColor: String + } + + connect() { + const progressBar = this.element; + const progressValue = this.percentageTarget; + const innerCircle = this.innerCircleTarget; + let startValue = 0, + endValue = this.percentageValue, + speed = 30, + progressColor = this.progressColorValue; + + const progress = setInterval(() => { + startValue++; + progressValue.textContent = `${startValue}%`; + progressValue.style.color = `${progressColor}`; + + innerCircle.style.backgroundColor = `${this.circleColorValue}`; + + progressBar.style.background = `conic-gradient(${progressColor} ${ + startValue * 3.6 + }deg,${this.bgColorValue} 0deg)`; + if (startValue === endValue) { + clearInterval(progress); + } + }, speed); + } +} diff --git a/app/components/concept_details_component.rb b/app/components/concept_details_component.rb index 380427a3cb..ea062158fd 100644 --- a/app/components/concept_details_component.rb +++ b/app/components/concept_details_component.rb @@ -2,9 +2,10 @@ class ConceptDetailsComponent < ViewComponent::Base include ApplicationHelper + include MultiLanguagesHelper - renders_one :header - renders_many :sections + renders_one :header, TableComponent + renders_many :sections, TableRowComponent attr_reader :concept_properties @@ -19,8 +20,20 @@ def initialize(id:, acronym:, properties:, top_keys:, bottom_keys:, exclude_keys @concept_properties = concept_properties2hash(@properties) if @properties end - def render_properties(properties_set, ontology_acronym, &block) - out = '' + def add_sections(keys, &block) + scheme_set = properties_set_by_keys(keys, prefix_properties(concept_properties)) + rows = row_hash_properties(scheme_set, concept_properties, &block) + + rows.each do |row| + section do |table_row| + table_row.create(*row) + end + end + + end + + def row_hash_properties(properties_set, ontology_acronym, &block) + out = [] properties_set&.each do |key, data| next if exclude_relation?(key) || !data[:values] @@ -31,21 +44,20 @@ def render_properties(properties_set, ontology_acronym, &block) if block_given? block.call(v) else - get_link_for_cls_ajax(v, ontology_acronym, '_blank') + if v.is_a?(String) + get_link_for_cls_ajax(v, ontology_acronym, '_blank') + else + display_in_multiple_languages([v].to_h) + end end - end + end if values.is_a?(Array) - line = <<-EOS - - - #{remove_owl_notation(key)} - - #{"

    #{ajax_links.join('

    ')}

    ".html_safe} - - EOS - out += line + out << [ + { th: "#{remove_owl_notation(key)}".html_safe }, + { td: "
    #{"

    #{ajax_links&.join('

    ')}"}

    ".html_safe } + ] end - raw out + out end def properties_set_by_keys(keys, concept_properties, exclude_keys = []) @@ -64,10 +76,11 @@ def filter_properties(top_keys, bottom_keys, exclude_keys, concept_properties) end private + def concept_properties2hash(properties) # NOTE: example properties # - #properties + # properties #=> # "#collapse-#{@id}", "data-toggle" => "collapse"} - %i.fas.fa-sort - .collapse.show{id: "collapse-#{@id}", "data-parent" => "#accordion-#{@id}"} - %table.minimal.concept_details{cellpadding: "0", cellspacing: "0", width: "100%"} - - top_set, leftover_set, bottom_set = filter_properties(@top_keys, @bottom_keys, @exclude_keys, @concept_properties) - = render_properties(top_set, @acronym) - = render_properties(leftover_set, @acronym) - - sections&.each do |section| - = section - = render_properties(bottom_set, @acronym) \ No newline at end of file + %div.raw-table + - if @bottom_keys.present? + = render DropdownContainerComponent.new(title: 'Raw data', id: "accordion-#{@id}") do + - top_set, leftover_set, bottom_set = filter_properties(@top_keys, @bottom_keys, @exclude_keys, prefix_properties(@concept_properties)) + = render TableComponent.new(stripped: true) do |t| + + - row_hash_properties(top_set, @acronym).each do |row| + - t.add_row(*row) + + - row_hash_properties(leftover_set, @acronym).each do |row| + - t.add_row(*row) + + + - sections.each do |section| + - t.row do + = section + + + - row_hash_properties(bottom_set, @acronym).each do |row| + - t.add_row(*row) diff --git a/app/components/date_time_field_component.rb b/app/components/date_time_field_component.rb new file mode 100644 index 0000000000..35ec91b38d --- /dev/null +++ b/app/components/date_time_field_component.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class DateTimeFieldComponent < ViewComponent::Base + + def initialize(value: , format: :monthfull_day_year) + super + @value = value + @format = format + end + + def call + l(Date.parse(@value), format: @format.to_sym) if @value + end + +end diff --git a/app/components/display/alert_component.rb b/app/components/display/alert_component.rb new file mode 100644 index 0000000000..c381f2a37e --- /dev/null +++ b/app/components/display/alert_component.rb @@ -0,0 +1,47 @@ +class Display::AlertComponent < ViewComponent::Base + def initialize(message: nil, closable: true, type: "info", auto_close_delay: nil) + @message = message + @closable = closable + @type = type + @auto_close_delay = auto_close_delay + end + + def closable? + @closable + end + + def message + @message + end + + def alert_type_class + case @type + when "info" + "alert-info-type" + when "warning" + "alert-warning-type" + when "danger" + "alert-danger-type" + when "success" + "alert-success-type" + end + end + + def alert_icon + case @type + when "info" + "info.svg" + when "warning" + "warning.svg" + when "danger" + "danger.svg" + when "success" + "success.svg" + end + end + + def auto_close? + !@auto_close_delay.nil? + end + +end \ No newline at end of file diff --git a/app/components/display/alert_component/alert_component.html.haml b/app/components/display/alert_component/alert_component.html.haml new file mode 100644 index 0000000000..66541be940 --- /dev/null +++ b/app/components/display/alert_component/alert_component.html.haml @@ -0,0 +1,14 @@ +.alert-container{data: {controller: "alert-component", + 'alert-component-auto-close-value': auto_close?, + 'alert-component-auto-close-after-value': @auto_close_delay, + }, + class: alert_type_class, style: 'white-space: normal;'} + .alert-icon{class: alert_type_class} + = inline_svg_tag alert_icon + .alert-message{class: alert_type_class} + = message || content + - if closable? + .alert-close{"data-action":"click->alert-component#close", class: alert_type_class} + = inline_svg_tag "x.svg" + + \ No newline at end of file diff --git a/app/components/display/alert_component/alert_component_controller.js b/app/components/display/alert_component/alert_component_controller.js new file mode 100644 index 0000000000..0abf19ddae --- /dev/null +++ b/app/components/display/alert_component/alert_component_controller.js @@ -0,0 +1,19 @@ +import { Controller } from "@hotwired/stimulus"; + +export default class extends Controller { + + static values = { + autoCloseAfter: { type: Number, default: 5000 }, + autoClose: { type: Boolean, default: false }, + } + connect(){ + if (this.autoCloseValue){ + setTimeout(() => { + this.close() + }, this.autoCloseAfterValue); + } + } + close(){ + this.element.style.display = "none" + } +} diff --git a/app/components/display/button_loader_component.rb b/app/components/display/button_loader_component.rb new file mode 100644 index 0000000000..202cd4cf9d --- /dev/null +++ b/app/components/display/button_loader_component.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class Display::ButtonLoaderComponent < ViewComponent::Base + + def initialize(id: nil, slim: false, color: 'normal') + @slim = slim + @color = color + @id = id + end + + + def call + slim_class = @slim ? "slim " : "" + danger_class = @color == "danger" ? "danger-button " : "" + warning_class = @color == "warning" ? "warning-button " : "" + + content_tag(:div, class: "animation-container #{danger_class} #{warning_class} #{slim_class}", id: @id) do + content_tag(:div, class: "lds-ellipsis") do + 4.times.map { content_tag(:div) }.join.html_safe + end + end + end +end diff --git a/app/components/display/header_component.rb b/app/components/display/header_component.rb new file mode 100644 index 0000000000..b814f55fc1 --- /dev/null +++ b/app/components/display/header_component.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +class Display::HeaderComponent < ViewComponent::Base + + renders_one :text + + def initialize(text: nil, tooltip: nil) + super + @text = text + @info = tooltip + end + + def call + content_tag(:div, class: 'header-component') do + out = content_tag(:p, text || @text) + if @info && !@info.empty? + out = out + render(Display::InfoTooltipComponent.new(text: @info)) + end + out + end + end + +end diff --git a/app/components/display/image_component.rb b/app/components/display/image_component.rb new file mode 100644 index 0000000000..36bcb10fe7 --- /dev/null +++ b/app/components/display/image_component.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +class Display::ImageComponent < ViewComponent::Base + include ModalHelper + + def initialize(src: , title: '', enable_zoom: true) + super + @src = src + @title = title + @enable_zoom = enable_zoom + end + + def call + content_tag(:div, class: 'image-container ') do + depiction_with_modal(@src) + end + end + + def depiction_with_modal(depiction_url) + img_tag = image_tag(depiction_url, class: 'image-content') + loop_icon_tag = content_tag(:span , image_tag('icons/loop.svg'), class: 'loop_icon') + modal_url = "/ajax/images/show?url=#{depiction_url}" + modal_options = { data: { show_modal_title_value: @title, show_modal_size_value: 'modal-xl' } } + + if @enable_zoom + link_to_modal(nil, modal_url, modal_options) do + loop_icon_tag + img_tag + end + else + img_tag + end + + end +end diff --git a/app/components/display/info_tooltip_component.rb b/app/components/display/info_tooltip_component.rb index 478d186909..824ae908e9 100644 --- a/app/components/display/info_tooltip_component.rb +++ b/app/components/display/info_tooltip_component.rb @@ -2,12 +2,13 @@ class Display::InfoTooltipComponent < ViewComponent::Base - def initialize(text: ) + def initialize(text: nil , icon: "info.svg") super @text = text + @icon = icon end def call - image_tag("icons/info.svg", data:{controller:'tooltip', 'tooltip-interactive-value': 'true'}, title: @text) + image_tag("icons/#{@icon}", data:{controller:'tooltip', 'tooltip-interactive-value': 'true'}, title: @text) end end diff --git a/app/components/dropdown_button_component.rb b/app/components/dropdown_button_component.rb new file mode 100644 index 0000000000..08c97795cc --- /dev/null +++ b/app/components/dropdown_button_component.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class DropdownButtonComponent < ViewComponent::Base + + renders_one :header + renders_many :sections, DropdownSectionButtonComponent + + def initialize(css_class: '') + super + @component_classes = css_class + end +end diff --git a/app/components/dropdown_button_component/dropdown_button_component.html.haml b/app/components/dropdown_button_component/dropdown_button_component.html.haml new file mode 100644 index 0000000000..952e03ceba --- /dev/null +++ b/app/components/dropdown_button_component/dropdown_button_component.html.haml @@ -0,0 +1,8 @@ +.dropdown{class:@component_classes} + %div.d-flex.align-items-center{data: {toggle: "dropdown"}} + %div + = header + %i.fas.fa-chevron-down.ml-1 + %div.dropdown-menu + - sections.each do |s| + = s \ No newline at end of file diff --git a/app/components/dropdown_container_component.rb b/app/components/dropdown_container_component.rb new file mode 100644 index 0000000000..3d785f85e8 --- /dev/null +++ b/app/components/dropdown_container_component.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class DropdownContainerComponent < ViewComponent::Base + renders_one :empty_state + def initialize(title:, id:, tooltip:nil) + super + @title = title + @id = id + @tooltip = tooltip + end +end diff --git a/app/components/dropdown_container_component/dropdown_container_component.html.haml b/app/components/dropdown_container_component/dropdown_container_component.html.haml new file mode 100644 index 0000000000..11c0dd2ee1 --- /dev/null +++ b/app/components/dropdown_container_component/dropdown_container_component.html.haml @@ -0,0 +1,12 @@ +.dropdown-container + .dropdown-title-bar{"data-toggle" => "collapse", "data-target" => "##{@id}"} + = render Display::HeaderComponent.new(text: @title, tooltip: @tooltip) + = image_tag("summary/arrow-down.svg", class: 'ml-2') + + .collapse{id: @id} + - if content && !content.empty? + = content + - else + = render Layout::ListComponent.new do |l| + - l.row do + = empty_state || 'no data' diff --git a/app/components/dropdown_section_button_component.rb b/app/components/dropdown_section_button_component.rb new file mode 100644 index 0000000000..c46074f758 --- /dev/null +++ b/app/components/dropdown_section_button_component.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class DropdownSectionButtonComponent < ViewComponent::Base + + renders_one :header + renders_many :items + + def initialize(divide: true) + super + @divide = divide + end + + def show_divider? + @divide + end +end diff --git a/app/components/dropdown_section_button_component/dropdown_section_button_component.html.haml b/app/components/dropdown_section_button_component/dropdown_section_button_component.html.haml new file mode 100644 index 0000000000..3070f75de5 --- /dev/null +++ b/app/components/dropdown_section_button_component/dropdown_section_button_component.html.haml @@ -0,0 +1,7 @@ +- if show_divider? + %div.dropdown-divider +- if header? + %h6.dropdown-header= header +- items.each do |i| + %span.dropdown-item + = i \ No newline at end of file diff --git a/app/components/external_link_text_component.rb b/app/components/external_link_text_component.rb new file mode 100644 index 0000000000..05bed2cfbb --- /dev/null +++ b/app/components/external_link_text_component.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class ExternalLinkTextComponent < LinkTextComponent + + def initialize(text:) + super(text: text, icon: 'icons/external-link.svg') + end +end diff --git a/app/components/field_container_component.rb b/app/components/field_container_component.rb new file mode 100644 index 0000000000..d45e42e0ea --- /dev/null +++ b/app/components/field_container_component.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class FieldContainerComponent < ViewComponent::Base + + renders_one :label + def initialize(label: nil, value: nil) + super + @label = label + @value = value + end + + def show? + content && !content.strip.empty? || (!@value.nil? && !@value.strip.empty?) + end +end diff --git a/app/components/field_container_component/field_container_component.html.haml b/app/components/field_container_component/field_container_component.html.haml new file mode 100644 index 0000000000..6a27f3c175 --- /dev/null +++ b/app/components/field_container_component/field_container_component.html.haml @@ -0,0 +1,9 @@ +- if show? + %div.field-container + %p.field-description_text + = label || @label + - if content + = content + - else + %span.field-normal_text + = @value diff --git a/app/components/file_input_loader_component/file_input_loader_component.html.haml b/app/components/file_input_loader_component/file_input_loader_component.html.haml deleted file mode 100644 index 8c807b7e24..0000000000 --- a/app/components/file_input_loader_component/file_input_loader_component.html.haml +++ /dev/null @@ -1,5 +0,0 @@ -.file_uploader.d-flex.justify-content-center.p-2.bg-secondary{data: {controller: "file-input"}} - .file-drop-area.w-100 - %span.choose-file-button Choose file - %span.file-message{data:{'file-input': {target: 'message'}}} or drag and drop file here - = file_field_tag @name, class: 'file-input', data:{'file-input-target': 'input', action: 'file-input#updateMessage'} diff --git a/app/components/form_group_component.rb b/app/components/form_group_component.rb deleted file mode 100644 index ea9c218115..0000000000 --- a/app/components/form_group_component.rb +++ /dev/null @@ -1,47 +0,0 @@ -# frozen_string_literal: true - -class FormGroupComponent < ViewComponent::Base - include Turbo::FramesHelper - attr_reader :method_name, :value, :name - renders_one :help - renders_one :label - renders_one :input - renders_one :submit - - - def initialize(object:nil, name: '', method: nil, label: '', required: false, inline: true) - @object_name = object.class.name - @method_name = method || '' - begin - @value = object.send(method) if object && method - rescue - @value = '' - end - @label_text = label && !label.empty? ? label : method.to_s.capitalize - @required = required - @name = name && !name.empty? ? name : @object_name - @inline = inline - end - - - def required? - @required - end - - def inline_label? - @inline - end - - def label_class - inline_label? ? 'col-sm-4' : '' - end - def content_class - inline_label? ? 'col-sm-8' : '' - end - def container_class - inline_label? ? 'row' : '' - end - def container_id - "#{@name}#{@method_name.capitalize}" - end -end diff --git a/app/components/form_group_component/form_group_component.html.haml b/app/components/form_group_component/form_group_component.html.haml deleted file mode 100644 index 8b3d1c7357..0000000000 --- a/app/components/form_group_component/form_group_component.html.haml +++ /dev/null @@ -1,23 +0,0 @@ -%div.form-group{id: container_id, class: container_class, style: 'align-items: baseline'} - %div{class: label_class} - - if label? - = label - - elsif @label_text - %label{for: "#{@name}_#{@method_name}", } - = @label_text - - if required? - %span.asterik * - %div{class: content_class} - = render TurboFrameComponent.new(id: "#{container_id}_from_group_input") do - %div.d-flex.w-100 - %div.flex-grow-1.mr-1 - - if input? - = input - - else - = content - - if help? - %small.form-text.text-muted{id: "#{@name}_#{@method_name}_helpBlock"} - = help - - if submit? - %div.d-flex - = submit \ No newline at end of file diff --git a/app/components/input/date_component.rb b/app/components/input/date_component.rb new file mode 100644 index 0000000000..6d26ad4c20 --- /dev/null +++ b/app/components/input/date_component.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +class Input::DateComponent < Input::InputFieldComponent + def initialize(label: '', name:, value: Date.today, placeholder: '', error_message: '', helper_text: '', id: nil, max_date: nil) + data_flat_picker = { controller: "flatpickr", flatpickr_date_format: "Y-m-d", flatpickr_alt_input: "true", flatpickr_alt_format: "F j, Y"} + data_flat_picker[:flatpickr_max_date] = max_date if max_date + + super(label: label, name: name, value: value, placeholder: placeholder, error_message: error_message, helper_text: helper_text, data: data_flat_picker, id: id) + end + + def call + render Input::InputFieldComponent.new(label: @label, name: @name, value: @value, placeholder: @placeholder, error_message: @error_message, helper_text: @helper_text, data: @data, type: 'date', id: @id) + end +end diff --git a/app/components/input/email_component.rb b/app/components/input/email_component.rb new file mode 100644 index 0000000000..8d68ba3bc7 --- /dev/null +++ b/app/components/input/email_component.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class Input::EmailComponent < Input::InputFieldComponent + def initialize(label: '', name:, value: nil, placeholder: '', error_message: '', helper_text: '') + super(label: label, name: name, value: value, placeholder: placeholder, error_message: error_message, helper_text: helper_text) + end + + def call + render Input::InputFieldComponent.new(label: @label, name: @name, value: @value, placeholder: @placeholder, error_message: @error_message, helper_text: @helper_text, type: "email") + end +end diff --git a/app/components/file_input_loader_component.rb b/app/components/input/file_input_component.rb similarity index 71% rename from app/components/file_input_loader_component.rb rename to app/components/input/file_input_component.rb index a7e960ade3..41de28bce3 100644 --- a/app/components/file_input_loader_component.rb +++ b/app/components/input/file_input_component.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -class FileInputLoaderComponent < ViewComponent::Base +class Input::FileInputComponent < ViewComponent::Base def initialize(name:, html_options: '') @name = name @html_options = html_options diff --git a/app/components/input/file_input_component/file_input_component.html.haml b/app/components/input/file_input_component/file_input_component.html.haml new file mode 100644 index 0000000000..47c4069057 --- /dev/null +++ b/app/components/input/file_input_component/file_input_component.html.haml @@ -0,0 +1,5 @@ +.file_uploader{data: {controller: "file-input"}} + .file-drop-area.w-100 + = inline_svg_tag "upload-file.svg" + %span.file-message{data:{'file-input': {target: 'message'}}} Drop your file here or, browse files on your device. + = file_field_tag @name, class: 'file-input', data:{'file-input-target': 'input', action: 'file-input#updateMessage'} \ No newline at end of file diff --git a/app/components/file_input_loader_component/file_input_loader_component_controller.js b/app/components/input/file_input_component/file_input_loader_component_controller.js similarity index 100% rename from app/components/file_input_loader_component/file_input_loader_component_controller.js rename to app/components/input/file_input_component/file_input_loader_component_controller.js diff --git a/app/components/input/input_field_component.rb b/app/components/input/input_field_component.rb new file mode 100644 index 0000000000..bed61a95fd --- /dev/null +++ b/app/components/input/input_field_component.rb @@ -0,0 +1,33 @@ +class Input::InputFieldComponent < ViewComponent::Base + def initialize(label: "" , name:, value: '', type: 'text', placeholder: "", error_message: "", helper_text: "", disabled: false, data: nil, id: '') + @label = label + @name = name + @placeholder = placeholder + @error_message = error_message + @helper_text = helper_text + @value = value + @type = type + @disabled = disabled + @id = id + @data = data + end + + + def error_style + "border-color: var(--error-color);" if error? + end + + def error? + !@error_message&.empty? + end + + def help? + !@helper_text&.empty? + end + + def label? + !@label&.empty? + end +end + + diff --git a/app/components/input/input_field_component/input_field_component.html.haml b/app/components/input/input_field_component/input_field_component.html.haml new file mode 100644 index 0000000000..3c9dd39ade --- /dev/null +++ b/app/components/input/input_field_component/input_field_component.html.haml @@ -0,0 +1,28 @@ +%div + - if label? + .text-input-label + = @label + + - if content + = content + - else + %input.input-field-component.text-input{class: @disabled ? '' : 'not-disabled', name: @name, type: @type, placeholder: @placeholder, style: error_style, id: @id, data: @data, value: @value, disabled: @disabled} + + + + - if error? + .text-input-error-text + = @error_message + - if help? + .text-input-helper-text + = raw @helper_text + + + + + + + + + + diff --git a/app/components/input/language_selector_component.rb b/app/components/input/language_selector_component.rb new file mode 100644 index 0000000000..3a7ec435c3 --- /dev/null +++ b/app/components/input/language_selector_component.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +class Input::LanguageSelectorComponent < ViewComponent::Base + + def initialize(languages:, selected: nil, id: '', name: '' ) + super + @languages = languages + @id = id + @name = languages + @selected = selected + end + + def languages_options + values = [['All languages', 'all']] + + @languages.each do |key, label| + option = "
    #{render(LanguageFieldComponent.new(value: key.to_s.downcase, label: label))}
    " + values += [[option, key.to_s.downcase]] + end + values + end + + def call + render SelectInputComponent.new(id: @id, name: @name, values: languages_options, selected: @selected, placeholder: 'Select a language') + end +end diff --git a/app/components/input/password_component.rb b/app/components/input/password_component.rb new file mode 100644 index 0000000000..435692a5b5 --- /dev/null +++ b/app/components/input/password_component.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class Input::PasswordComponent < Input::InputFieldComponent + def initialize(label: '', name:, value: nil, placeholder: '', error_message: '', helper_text: '') + super(label: label, name: name, value: value, placeholder: placeholder, error_message: error_message, helper_text: helper_text) + end + + def call + render Input::InputFieldComponent.new(label: @label, name: @name, value: @value, placeholder: @placeholder, error_message: @error_message, helper_text: @helper_text, type: "password") + end +end diff --git a/app/components/input/select_component.rb b/app/components/input/select_component.rb new file mode 100644 index 0000000000..7dd36d43f0 --- /dev/null +++ b/app/components/input/select_component.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +class Input::SelectComponent < Input::InputFieldComponent + + def initialize(id: nil, label: '', name:, value: [], selected: '', placeholder: '', error_message: '', helper_text: '', multiple: false, open_to_add_values: false, required: false, data: {}, tooltip: nil) + super(label: label, name: name, value: value, placeholder: placeholder, error_message: error_message, + helper_text: helper_text, data: data) + @values = value + @selected = selected + @open_to_add_values = open_to_add_values + @multiple = multiple + @id = id + @required = required + end + + def call + render Input::InputFieldComponent.new(name: @name, error_message: @error_message, helper_text: @helper_text, label: @label) do + render SelectInputComponent.new(id: @id, name: @name, values: @values, selected: @selected, + placeholder: @placeholder, required: @required, + multiple: @multiple, open_to_add_values: @open_to_add_values, + data: @data) + end + end +end diff --git a/app/components/input/select_component/select_component.html.haml b/app/components/input/select_component/select_component.html.haml new file mode 100644 index 0000000000..242f794058 --- /dev/null +++ b/app/components/input/select_component/select_component.html.haml @@ -0,0 +1,2 @@ += render Input::InputFieldComponent.new(name: @name, error_message: @error_message, helper_text: @helper_text, label: @label) do + = render SelectInputComponent.new(id: @id, name: @name, values: @values , selected: @selected , multiple: @multiple, open_to_add_values: @open_to_add_values ) \ No newline at end of file diff --git a/app/components/input/text_area_component.rb b/app/components/input/text_area_component.rb new file mode 100644 index 0000000000..940a8b9352 --- /dev/null +++ b/app/components/input/text_area_component.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class Input::TextAreaComponent < Input::InputFieldComponent + def initialize(label: '', name:, value: nil, placeholder: '', error_message: '', helper_text: '', rows: "5") + super(label: label, name: name, value: value, placeholder: placeholder, error_message: error_message, helper_text: helper_text) + @rows = rows + end +end diff --git a/app/components/input/text_area_component/text_area_component.html.haml b/app/components/input/text_area_component/text_area_component.html.haml new file mode 100644 index 0000000000..d2dd1b5d87 --- /dev/null +++ b/app/components/input/text_area_component/text_area_component.html.haml @@ -0,0 +1,3 @@ += render Input::InputFieldComponent.new(label: @label, name: @name, value: @value, placeholder: @placeholder, error_message: @error_message, helper_text: @helper_text) do + %textarea.input-field-component{name: @name, rows: @rows, placeholder: @placeholder, style: error_style} + = @value \ No newline at end of file diff --git a/app/components/input/text_input_component.rb b/app/components/input/text_input_component.rb new file mode 100644 index 0000000000..aad3006da9 --- /dev/null +++ b/app/components/input/text_input_component.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class Input::TextInputComponent < Input::InputFieldComponent + def initialize(label: '', name:, value: nil, placeholder: '', error_message: '', helper_text: '', disabled: false, id: '', data: {}) + super(label: label, name: name, value: value, placeholder: placeholder, error_message: error_message, helper_text: helper_text, disabled: disabled, id: id) + end + + def call + render Input::InputFieldComponent.new(label: @label, name: @name, value: @value, placeholder: @placeholder, + error_message: @error_message, helper_text: @helper_text, + type: @type, disabled: @disabled) + end +end diff --git a/app/components/input/url_component.rb b/app/components/input/url_component.rb new file mode 100644 index 0000000000..01db0eb682 --- /dev/null +++ b/app/components/input/url_component.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class Input::UrlComponent < Input::InputFieldComponent + def initialize(label: '', name:, value: nil, placeholder: '', error_message: '', helper_text: '') + super(label: label, name: name, value: value, placeholder: placeholder, error_message: error_message, helper_text: helper_text) + end + + def call + render Input::InputFieldComponent.new(label: @label, name: @name, value: @value, placeholder: @placeholder, error_message: @error_message, helper_text: @helper_text, type: "url") + end +end diff --git a/app/components/internal_link_text_component.rb b/app/components/internal_link_text_component.rb new file mode 100644 index 0000000000..cd1d73b3e1 --- /dev/null +++ b/app/components/internal_link_text_component.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class InternalLinkTextComponent < LinkTextComponent + def initialize(text:) + super(text: text, icon: 'icons/internal-link.svg') + end +end diff --git a/app/components/label_link_component.rb b/app/components/label_link_component.rb index 77a3642a6b..3d8ecee988 100644 --- a/app/components/label_link_component.rb +++ b/app/components/label_link_component.rb @@ -2,7 +2,7 @@ class LabelLinkComponent < ViewComponent::Base - def initialize(id:, text:, icon: 'fas fa-external-link-alt') + def initialize(id:, text:, icon: 'popup-link') @id = id @text = text @icon = icon @@ -10,9 +10,9 @@ def initialize(id:, text:, icon: 'fas fa-external-link-alt') def call if @id.eql?(@text) - @text + ExternalLinkTextComponent.new(text: @text).call else - @text + "" + InternalLinkTextComponent.new(text: @text).call end end diff --git a/app/components/language_field_component.rb b/app/components/language_field_component.rb new file mode 100644 index 0000000000..2473e7b1ce --- /dev/null +++ b/app/components/language_field_component.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true +require 'iso-639' + +class LanguageFieldComponent < ViewComponent::Base + + include FlagIconsRails::Rails::ViewHelpers + + def initialize(value:, label: nil) + super + @value = value + @lang_code = value&.is_a?(String) ? ISO_639.find(value.split('/').last)&.alpha2 : nil + @label = label + end + + def lang_code + @lang_code = 'gb' if @lang_code.eql?('en') + @lang_code + end + + def value + @value&.is_a?(String) ? @value.to_s.split('/').last : 'NO-LANG' + end +end diff --git a/app/components/language_field_component/language_field_component.html.haml b/app/components/language_field_component/language_field_component.html.haml new file mode 100644 index 0000000000..8530fae3d4 --- /dev/null +++ b/app/components/language_field_component/language_field_component.html.haml @@ -0,0 +1,8 @@ +- if @lang_code + .d-flex.align-items-center + = flag_icon(lang_code) + - if @label + %div.ml-1 + = @label +- else + = render ChipButtonComponent.new(text: value) \ No newline at end of file diff --git a/app/components/layout/card_component.rb b/app/components/layout/card_component.rb new file mode 100644 index 0000000000..ceebc820c0 --- /dev/null +++ b/app/components/layout/card_component.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +class Layout::CardComponent < ViewComponent::Base + renders_one :header, Display::HeaderComponent + + def call + content_tag(:div, class: 'summary-card') do + out = '' + out = header if header? + raw(out.to_s + content) + end + end +end diff --git a/app/components/layout/horizontal_list_component.rb b/app/components/layout/horizontal_list_component.rb new file mode 100644 index 0000000000..2da933cdce --- /dev/null +++ b/app/components/layout/horizontal_list_component.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class Layout::HorizontalListComponent < ViewComponent::Base + renders_many :elements + + def call + return if elements.empty? + + content_tag(:div, class: 'd-flex flex-wrap align-items-center') do + out = '' + elements.each do |element| + out = out + content_tag(:div, element, class: 'mr-1 mb-1 text-truncate-scroll') + end + raw out + end + end + +end diff --git a/app/components/layout/list_component.rb b/app/components/layout/list_component.rb new file mode 100644 index 0000000000..edf75b865d --- /dev/null +++ b/app/components/layout/list_component.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class Layout::ListComponent < ViewComponent::Base + + renders_many :rows + + def call + return if rows.map(&:to_s).reject(&:empty?).empty? + + content_tag(:div, style: 'padding: 0px 20px 20px 20px;') do + out = "" + rows.each do |row| + next if row.nil? || row.to_s.empty? + out = out + content_tag(:div, row.to_s, class: 'mb-1') + end + out.html_safe + end + end + +end diff --git a/app/components/layout/progress_pages_component.rb b/app/components/layout/progress_pages_component.rb new file mode 100644 index 0000000000..1680e4e494 --- /dev/null +++ b/app/components/layout/progress_pages_component.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class Layout::ProgressPagesComponent < ViewComponent::Base + + renders_many :pages + def initialize(pages_title: []) + super + @pages_title = pages_title + end +end diff --git a/app/components/layout/progress_pages_component/progress_pages_component.html.haml b/app/components/layout/progress_pages_component/progress_pages_component.html.haml new file mode 100644 index 0000000000..6786a5ce69 --- /dev/null +++ b/app/components/layout/progress_pages_component/progress_pages_component.html.haml @@ -0,0 +1,32 @@ +%div.w-100{'data-controller': 'progress-pages'} + %div + .d-flex.justify-content-center.flex-column + .progress-pages-container + - @pages_title.each_with_index do |key, index| + .progress-item{'data-progress-pages-target': 'pageItem'} + %div + .outlined-circle{class: index.zero? ? 'outlined-active-circle' : ''} + = image_tag("icons/white-check.svg") + %span{class: index.zero? ? 'active' : ''} + = key.humanize + - if index < (@pages_title.size-1) + %hr.line + %div + - pages.each_with_index do |page, index| + %div.progress-content.position-relative{{'data-progress-pages-target': 'pageContent'}, class: index.zero? ? '' : 'hide'} + = page + + + .progress-pages-actions + .progress-pages-back-button.hide{'data-action': "click->progress-pages#navigateBack", 'data-progress-pages-target': 'backBtn'} + = render Buttons::RegularButtonComponent.new(id: 'progress-pages-back-button', value: "Back", variant: "secondary", size: 'slim',state: 'regular') do |btn| + - btn.icon_left do + = inline_svg "icons/arrow-left.svg" + .progress-pages-next-button{'data-action': "click->progress-pages#navigateNext", 'data-progress-pages-target': 'nextBtn'} + = render Buttons::RegularButtonComponent.new(id: 'progress-pages-next-button', value: "Next", size: 'slim', state: 'regular') do |btn| + - btn.icon_right do + = inline_svg "arrow-right.svg" + .progress-pages-next-button.hide{ 'data-progress-pages-target': 'finishBtn'} + = render Buttons::RegularButtonComponent.new(id: 'progress-pages-finish-button', value: "Finish", size: 'slim', type: 'submit') do |btn| + - btn.icon_right do + = inline_svg "icons/white-check.svg" \ No newline at end of file diff --git a/app/components/layout/progress_pages_component/progress_pages_component_controller.js b/app/components/layout/progress_pages_component/progress_pages_component_controller.js new file mode 100644 index 0000000000..146922311a --- /dev/null +++ b/app/components/layout/progress_pages_component/progress_pages_component_controller.js @@ -0,0 +1,87 @@ +import {Controller} from "@hotwired/stimulus"; + +export default class extends Controller { + static targets = ['pageItem','pageContent' ,'backBtn', 'nextBtn', 'finishBtn'] + connect() { + this.pagesItems = this.pageItemTargets + this.buttons = [this.backBtnTarget, this.nextBtnTarget, this.finishBtnTarget] + this.currentForm = 1 + } + + navigateBack(){ + this.navigateForm('back') + } + navigateNext(){ + this.navigateForm('next') + } + + navigateForm(direction) { + if (direction === "next" && this.currentForm < this.pagesItems.length) { + this.currentForm += 1 + this.showForm() + } else if (direction === "back" && this.currentForm > 1){ + this.currentForm -= 1 + this.showForm() + } + } + + showForm(){ + const targetForm = this.currentForm + for (let index = 1; index <= this.pagesItems.length; index++) { + + const targetFormDOM = this.pageContentTargets[index - 1]; + + const isCurrentForm = targetForm === index; + + targetFormDOM.classList.toggle("hide", !isCurrentForm); + + if (isCurrentForm) { + this.updateProgressBar(targetForm); + this.updateButtons(targetForm); + } + + } + + } + updateProgressBar(targetForm) { + const progressItemsDOM = document.querySelectorAll(".progress-item > div"); + const line = document.querySelectorAll(".line"); + + progressItemsDOM.forEach((item, index) => { + const isPassedSection = index + 1 < targetForm; + const isCurrentSection = index + 1 === targetForm; + + item.children[0].classList.toggle("outlined-checked-circle", isPassedSection); + item.children[0].classList.toggle("outlined-active-circle", isCurrentSection); + + + item.children[1].classList.toggle("active", isCurrentSection || isPassedSection); + + + line[index]?.classList.toggle("active", isPassedSection); + }); + } + + updateButtons(targetForm) { + + switch (targetForm) { + case 1: + this.showBtn([this.buttons[1]]); + break; + case this.pagesItems.length: + this.showBtn([this.buttons[0], this.buttons[2]]); + break; + default: + this.showBtn([this.buttons[0], this.buttons[1]]); + } + + } + + showBtn(btnIds = []) { + this.buttons.forEach((btn) => { + const targetBtnDOM = btn; + const shouldShowBtn = btnIds.includes(btn); + targetBtnDOM.classList.toggle("hide", !shouldShowBtn); + }); + } +} diff --git a/app/components/layout/reveal_component.rb b/app/components/layout/reveal_component.rb new file mode 100644 index 0000000000..f6211ffed7 --- /dev/null +++ b/app/components/layout/reveal_component.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +class Layout::RevealComponent < ViewComponent::Base + renders_one :button + + def initialize(init_show: false, show_condition: nil,hidden_class: 'd-none') + @hidden_class = hidden_class + @init_show = init_show + @show_condition = show_condition + end + + def container_data + out = { + controller: 'reveal-component', + 'reveal-component-hidden-class': @hidden_class + } + out['reveal-component-condition-value'] = @show_condition if @show_condition + out + end +end diff --git a/app/components/layout/reveal_component/reveal_component.html.haml b/app/components/layout/reveal_component/reveal_component.html.haml new file mode 100644 index 0000000000..747ba02ea0 --- /dev/null +++ b/app/components/layout/reveal_component/reveal_component.html.haml @@ -0,0 +1,5 @@ +%div{data: container_data} + %div{'data-action': "change->reveal-component#toggle"} + = button + %div{'data-reveal-component-target': "item", class: @init_show ? '' : @hidden_class} + = content \ No newline at end of file diff --git a/app/components/layout/reveal_component/reveal_component_controller.js b/app/components/layout/reveal_component/reveal_component_controller.js new file mode 100644 index 0000000000..52badb5999 --- /dev/null +++ b/app/components/layout/reveal_component/reveal_component_controller.js @@ -0,0 +1,30 @@ +import Reveal from 'stimulus-reveal-controller' + +export default class extends Reveal { + static values = { + condition: String + } + + connect() { + super.connect() + } + + toggle(event) { + if (!this.conditionValue) { + super.toggle() + } else if (this.#shown() && !this.#conditionChecked(event)) { + super.toggle() + } else if (!this.#shown() && this.#conditionChecked(event)) { + super.toggle() + } + } + + #conditionChecked(event) { + return this.conditionValue === event.target.value + } + + #shown() { + return !this.itemTargets[0].classList.contains(this.class); + } + +} \ No newline at end of file diff --git a/app/components/license_field_component.rb b/app/components/license_field_component.rb new file mode 100644 index 0000000000..6baf0f86fa --- /dev/null +++ b/app/components/license_field_component.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class LicenseFieldComponent < ViewComponent::Base + + def initialize(value: ) + super + @value = value + end + +end diff --git a/app/components/license_field_component/license_field_component.html.haml b/app/components/license_field_component/license_field_component.html.haml new file mode 100644 index 0000000000..2969701a75 --- /dev/null +++ b/app/components/license_field_component/license_field_component.html.haml @@ -0,0 +1,8 @@ +- if @value.to_s.start_with?("http://creativecommons.org/licenses") || @value.to_s.start_with?("https://creativecommons.org/licenses") + %a{:rel => "license", :alt => "Creative Commons License", :href => "#{@value}", :target => "_blank", :style => "border-width:0", :title => "#{@value}"} + %img{:rel => "license", :alt => "Creative Commons License", :title => "#{@value}", :style => "border-width:0", :src => "https://i.creativecommons.org/l/by/4.0/88x31.png"} +- elsif @value.to_s.start_with?("http://opensource.org/licenses") || @value.to_s.start_with?("https://opensource.org/licenses") + %a{:rel => "license", :alt => "Open Source License", :href => "#{@value}", :title => "#{@value}", :target => "_blank", :style => "border-width:0;", :src => "https://opensource.org/files/osi_logo_bold_100X133_90ppi.png"} + %img{:rel => "license", :alt => "Open Source License", :title => "#{@value}", :style => "height: 80px; border-width:0;", :src => "https://opensource.org/files/osi_logo_bold_100X133_90ppi.png"} +- else + %a{:rel => "license", :href => "#{@value}", :target => "_blank"}= @value \ No newline at end of file diff --git a/app/components/link_field_component.rb b/app/components/link_field_component.rb new file mode 100644 index 0000000000..91640461fa --- /dev/null +++ b/app/components/link_field_component.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class LinkFieldComponent < ViewComponent::Base + + def initialize(value:, raw: false) + super + @value = value + @raw = raw + end + + + def internal_link? + @value.to_s.include?(URI.parse($REST_URL).hostname) || @value.to_s.include?(URI.parse($UI_URL).hostname) + end + +end diff --git a/app/components/link_field_component/link_field_component.html.haml b/app/components/link_field_component/link_field_component.html.haml new file mode 100644 index 0000000000..06e23212b8 --- /dev/null +++ b/app/components/link_field_component/link_field_component.html.haml @@ -0,0 +1,6 @@ +- if internal_link? + = render ChipButtonComponent.new(url: @value.to_s.sub("data.", ""), text: @raw ? @value : @value.to_s.split("/").last, type: "clickable") +- elsif @value.to_s =~ /\A#{URI::regexp(%w[http https])}\z/ + = render ChipButtonComponent.new(url: @value.to_s, text: @value.to_s, type: "clickable") +- else + = render ChipButtonComponent.new( text: @value.to_s, type: "static") \ No newline at end of file diff --git a/app/components/link_text_component.rb b/app/components/link_text_component.rb new file mode 100644 index 0000000000..edaad068c5 --- /dev/null +++ b/app/components/link_text_component.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class LinkTextComponent < ViewComponent::Base + + def initialize(text:, icon: nil, target: nil) + @text = text + @icon = icon + @target = target + end + + def call + svg_icon = !@icon&.empty? ? inline_svg(@icon) : '' + extra_span = @text == t('mappings.upload_mappings') ? '' : "#{svg_icon}" + "#{@text}#{extra_span}".html_safe + end +end diff --git a/app/components/loader_component.rb b/app/components/loader_component.rb index 8052650b76..d0f7395b69 100644 --- a/app/components/loader_component.rb +++ b/app/components/loader_component.rb @@ -3,9 +3,18 @@ class LoaderComponent < ViewComponent::Base include ActionView::Helpers::TagHelper + def initialize(small: false) + super + @small = small + end + + def small_class + @small ? 'spinner-border-sm' : '' + end + def call content_tag(:div, class: 'd-flex align-items-center flex-column') do - content_tag(:div, class:'spinner-border') do + content_tag(:div, class: "spinner-border #{small_class}") do content_tag(:span) do 'Loading' end @@ -15,12 +24,4 @@ def call end end end - - def small? - @small - end - def small_class - "spinner-border-sm" - end - end diff --git a/app/components/metadata_selector_component.rb b/app/components/metadata_selector_component.rb deleted file mode 100644 index 70c4112099..0000000000 --- a/app/components/metadata_selector_component.rb +++ /dev/null @@ -1,19 +0,0 @@ -# frozen_string_literal: true - -class MetadataSelectorComponent < ViewComponent::Base - - include ActionView::Helpers::FormOptionsHelper - - def initialize(label: 'Select properties', selected:, values:, inline: false, multiple: true) - super - @label = label - @selected_values = selected - @metadata_data = values - @inline = inline - @multiple = multiple - end - - def options_data - options_for_select(@metadata_data, selected: @selected_values) - end -end diff --git a/app/components/metadata_selector_component/metadata_selector_component.html.haml b/app/components/metadata_selector_component/metadata_selector_component.html.haml deleted file mode 100644 index 15c1c5a84c..0000000000 --- a/app/components/metadata_selector_component/metadata_selector_component.html.haml +++ /dev/null @@ -1,2 +0,0 @@ -= render FormGroupComponent.new(object:nil, name: :search, method: :metadata, label: @label, inline: @inline) do - = select(:search, :metadata, options_data, {}, style:'width:100%', multiple: @multiple, data: {controller:'metadata-select'}) \ No newline at end of file diff --git a/app/components/metadata_selector_component/metadata_selector_component_controller.js b/app/components/metadata_selector_component/metadata_selector_component_controller.js deleted file mode 100644 index 59750c57a7..0000000000 --- a/app/components/metadata_selector_component/metadata_selector_component_controller.js +++ /dev/null @@ -1,15 +0,0 @@ -import {Controller} from "@hotwired/stimulus"; -import {useChosen} from "../../javascript/mixins/useChosen"; - -export default class extends Controller { - connect() { - useChosen(this.element, { - search_contains: true, - width: "100%" - }, this.#triggerChange.bind(this)) - } - - #triggerChange() { - document.dispatchEvent(new Event('change', {target: this.element})) - } -} diff --git a/app/components/nested_agent_search_input_component.rb b/app/components/nested_agent_search_input_component.rb new file mode 100644 index 0000000000..1f3ac942e1 --- /dev/null +++ b/app/components/nested_agent_search_input_component.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class NestedAgentSearchInputComponent < ViewComponent::Base + + include Turbo::FramesHelper, AgentHelper + + def initialize(label: nil, agents:, agent_type:, name_prefix:, show_affiliations: true, edit_on_modal: false, parent_id: nil) + @agents = agents + @agent_type = agent_type + @name_prefix = name_prefix + @edit_on_modal = edit_on_modal + @parent_id = parent_id + @label = label + @show_affiliations = show_affiliations + end +end diff --git a/app/components/nested_agent_search_input_component/nested_agent_search_input_component.html.haml b/app/components/nested_agent_search_input_component/nested_agent_search_input_component.html.haml new file mode 100644 index 0000000000..bf93b1aa80 --- /dev/null +++ b/app/components/nested_agent_search_input_component/nested_agent_search_input_component.html.haml @@ -0,0 +1,15 @@ += render NestedFormInputsComponent.new do |c| + - c.header do + = @label + - c.template do + = render TurboFrameComponent.new(id: agent_id_frame_id('NEW_RECORD', @parent_id)) do + = render AgentSearchInputComponent.new(id: 'NEW_RECORD', agent_type: @agent_type, + name_prefix: @name_prefix, show_affiliations: @show_affiliations, + parent_id: @parent_id, edit_on_modal: @edit_on_modal) + + - c.empty_state do + = hidden_field_tag agent_field_name('', @name_prefix+"[#{Array(@agents).size}]") + - Array(@agents).each_with_index do |agent, i| + - if agent&.agentType + - c.row do + = render partial: 'agents/agent_show', locals: {agent_id: i, agent: agent, name_prefix: @name_prefix, edit_on_modal: @edit_on_modal, parent_id: @parent_id} diff --git a/app/components/nested_form_inputs_component.rb b/app/components/nested_form_inputs_component.rb index 880cfe91d1..f538185805 100644 --- a/app/components/nested_form_inputs_component.rb +++ b/app/components/nested_form_inputs_component.rb @@ -3,5 +3,13 @@ class NestedFormInputsComponent < ViewComponent::Base renders_one :template + renders_one :header renders_many :rows + renders_one :empty_state + + def initialize(object_name: '', default_empty_row: false) + super + @object_name = object_name + @default_row = default_empty_row + end end diff --git a/app/components/nested_form_inputs_component/nested_form_inputs_component.html.haml b/app/components/nested_form_inputs_component/nested_form_inputs_component.html.haml index 9862842312..d0e5751e2d 100644 --- a/app/components/nested_form_inputs_component/nested_form_inputs_component.html.haml +++ b/app/components/nested_form_inputs_component/nested_form_inputs_component.html.haml @@ -1,21 +1,34 @@ -%div{data: {controller: "nested-form"}} +%div.nested-form-input-container{data: {controller: "nested-form"}} %template{'data-nested-form-target':"template"} - %div.d-flex.align-items-center.nested-form-wrapper{'data-new-record': 'true'} + %div.d-flex.align-items-center.nested-form-wrapper.my-1{'data-new-record': 'true'} %div{style: 'width: 90%'} = template %div.d-flex.justify-content-end{style: 'width: 10%'} - %button.btn.btn-danger{data: {action:"nested-form#remove"}} - %i.fas.fa-minus.fa-lg + %div.delete{data: {action:"click->nested-form#remove"}} + = inline_svg 'icons/delete.svg' + + %div.titles + = header + %div.d-none + = empty_state - rows.each_with_index do |row , index| - %div.d-flex.align-items-center.nested-form-wrapper{'data-new-record': 'true'} + %div.d-flex.align-items-center.nested-form-wrapper.my-1{'data-new-record': 'true'} %div{style: 'width: 90%'} = row %div.d-flex.justify-content-end{style: 'width: 10%'} - - unless index == 0 - %button.btn.btn-danger{data: {action:"nested-form#remove"}} - %i.fas.fa-minus.fa-lg + %div.delete{data: {action:"click->nested-form#remove"}} + = inline_svg 'icons/delete.svg' + + - if @default_row && rows.empty? + %div.d-flex.align-items-center.nested-form-wrapper.my-1{'data-new-record': 'true'} + %div{style: 'width: 90%'} + = template + %div.d-flex.justify-content-end{style: 'width: 10%'} + %div.delete{data: {action:"click->nested-form#remove"}} + = inline_svg 'icons/delete.svg' %div{'data-nested-form-target': "target"} - %div.float-right - %button.btn.btn-success{data: {action:"nested-form#add"}} - %i.fas.fa-plus.fa-lg \ No newline at end of file + %div.add-another-object{data: {action:"click->nested-form#add"}} + = inline_svg 'icons/plus.svg', width: "14px", height: "14px" + %div + Add another #{@object_name} diff --git a/app/components/notification_component.rb b/app/components/notification_component.rb new file mode 100644 index 0000000000..49f82354a3 --- /dev/null +++ b/app/components/notification_component.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +class NotificationComponent < ViewComponent::Base + + def initialize(title:, comment: '', type: 'success', auto_remove: true) + super + @title = title + @comment = comment + @type = type + @auto_remove = auto_remove + end + + def auto_remove? + @auto_remove + end + + def notification_type_icon + svg_icon(@type) + end + + def notification_animation_class + auto_remove? ? 'slide-in-out-right' : 'slide-in-right' + end + + def notification_type_class + "type-#{@type}" + end + + def notification_class + notification_animation_class + end + + private + def svg_icon(name) + inline_svg_tag("icons/#{name}.svg", class: notification_type_class) + end + + +end diff --git a/app/components/notification_component/notification_component.html.haml b/app/components/notification_component/notification_component.html.haml new file mode 100644 index 0000000000..92962db545 --- /dev/null +++ b/app/components/notification_component/notification_component.html.haml @@ -0,0 +1,13 @@ +.notification{class: notification_class} + .notification-inner + .notification-content + %span + = notification_type_icon + .notification-text + %p.text-sm.font-medium.text-gray-900 + = @title + %p + = @comment + .ml-4.flex-shrink-0.d-flex + %button.notification-close{"onClick": "this.parentElement.parentElement.parentElement.style.opacity = 0"} + = svg_icon('close') \ No newline at end of file diff --git a/app/components/ontology_browse_card_component.rb b/app/components/ontology_browse_card_component.rb index 6e55bd627e..84251d7f0d 100644 --- a/app/components/ontology_browse_card_component.rb +++ b/app/components/ontology_browse_card_component.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true class OntologyBrowseCardComponent < ViewComponent::Base + include OntologiesHelper def initialize(ontology: nil) super diff --git a/app/components/ontology_browse_card_component/ontology_browse_card_component.html.haml b/app/components/ontology_browse_card_component/ontology_browse_card_component.html.haml index 93feaaa154..c9fe2ee50d 100644 --- a/app/components/ontology_browse_card_component/ontology_browse_card_component.html.haml +++ b/app/components/ontology_browse_card_component/ontology_browse_card_component.html.haml @@ -1,79 +1,74 @@ -- if ontology +-if ontology .browse-ontology-container - .browse-ontology-description - .browse-ontology-title-bar - %a.browse-ontology-title{:href => "/ontologies/#{ontology[:acronym]}", data: {'turbo-frame': '_top'}} - = ontology[:name]+" ("+ontology[:acronym]+")" - - if ontology[:private] - %i.fas.fa-key{title:"Private Ontology"} - .browse-desc-container{data:{controller:"text-truncate", 'text-truncate-more-text-value': '+ Show more ...' , 'text-truncate-less-text-value': '- Show less ...'}} - %p.browse-desc-text{'data-text-truncate-target': 'content'} - = ontology[:description] - .browse-show-more-button{data:{'text-truncate-target': 'button', 'action':"click->text-truncate#toggle"}} - + Show more ... + .d-flex + .browse-ontology-description + .browse-ontology-title-bar + %a.browse-ontology-title{:href => "/ontologies/#{ontology[:acronym]}", data: {'turbo': 'false'}} + = ontology[:name]+" ("+ontology[:acronym]+")" + = private_ontology_icon(ontology[:private]) + - if session[:user]&.admin? + - ontology_status = status_string(ontology) + = render Display::InfoTooltipComponent.new(text: ontology_status, icon: submission_status_icons(ontology_status)) + .browse-desc-container{data:{controller:"text-truncate", 'text-truncate-more-text-value': '+ Show more ...' , 'text-truncate-less-text-value': '- Show less ...'}} + %p.browse-desc-text{'data-text-truncate-target': 'content'} + = ontology[:description] + .browse-show-more-button{data:{'text-truncate-target': 'button', 'action':"click->text-truncate#toggle"}} + + Show more ... - - unless ontology[:fairScore].nil? || ontology[:acronym] == 'AGROVOC' - .browse-fair - %p.browse-fair-title - FAIR score - .browse-progress-bar - .browse-faire-progress{:style => "width: #{ontology[:normalizedFairScore].to_s+"%"}"} - %p.browse-fair-score - = ontology[:fairScore] - %a.browse-fair-details{:href => "/ontologies/#{ontology[:acronym]}#fair-details"} FAIR details ... - .d-flex.align-items-baseline - - if ontology[:creationDate] - .browse-uploaded - %p.mr-1 Uploaded - %p.browse-uploaded-date{data:{controller: 'timeago', 'timeago-datetime-value': ontology[:creationDate], 'timeago-add-suffix-value': 'true'}} + - unless ontology[:fairScore].nil? || ontology[:acronym] == 'AGROVOC' + .browse-fair + %p.browse-fair-title + FAIR score + .browse-progress-bar + .browse-faire-progress{:style => "width: #{ontology[:normalizedFairScore].to_s+"%"}"} + %p.browse-fair-score + = ontology[:fairScore] + %a.browse-fair-details{:href => "/ontologies/#{ontology[:acronym]}#fair-details", 'data-turbo': 'false'} FAIR details ... + + .browse-ontology-cards + = render SquareBadgeComponent.new(label: 'classes', count: ontology[:class_count_formatted], link: "/ontologies/#{ontology[:acronym]}?p=classes" ) + + = render SquareBadgeComponent.new(label: ontology[:format] == 'SKOS' ? "concepts" : "instances", + count: ontology[:individual_count_formatted], + link: "/ontologies/#{ontology[:acronym]}?p=#{ontology[:format] == 'SKOS' ? "classes" : "instances"}") + + = render SquareBadgeComponent.new(label: 'projects', count: ontology[:project_count], link: "/ontologies/#{ontology[:acronym]}#projects_section" ) + + = render SquareBadgeComponent.new(label: 'notes', count: ontology[:note_count], link: "/ontologies/#{ontology[:acronym]}?p=notes" ) + + + .d-flex.align-items-baseline.mt-1 + - if ontology[:creationDate] + %span.mr-1 + = render ChipButtonComponent.new(type: "clickable") do + %span.mr-1 Uploaded + %span.browse-uploaded-date{data:{controller: 'timeago', 'timeago-datetime-value': ontology[:creationDate], 'timeago-add-suffix-value': 'true'}} - if ontology[:contact] - %p.mx-1 by - %p.browse-uploaded-date.text-truncate + %span.mx-1 by + %span.browse-uploaded-date.text-truncate = ontology[:contact].humanize - - if ontology[:released] - .browse-ontology-view{data:{controller:'tooltip'}, title: "Release date #{ontology[:released].split('/').last}"} - = DateTime.parse(ontology[:released]).year + - if ontology[:released] + - date = render DateTimeFieldComponent.new(value: ontology[:released]) + %span{data:{controller:'tooltip'}, title: "Release date #{date}"} + = render ChipButtonComponent.new(type: "clickable") do + = DateTime.parse(date).year rescue date - - if ontology[:format] - .browse-ontology-view + - if ontology[:format] + %span.mx-1 + = render ChipButtonComponent.new(type: "clickable") do = ontology[:format] - - if ontology[:deprecated] - .browse-ontology-deprecated - deprecated - - if ontology[:viewOfOnt] - .browse-ontology-view{data:{controller:'tooltip'}, title: "View of the ontology #{ontology[:viewOfOnt].split('/').last}"} - view - - if session[:user].admin? - %div.admin-broder{title: content_tag(:div, debug(ontology), style: 'height: 300px; overflow: scroll'), data:{controller: 'tooltip', 'tooltip-interactive-value': 'true'}} - .browse-ontology-view.admin-background - Debug - .browse-ontology-cards - - if ontology[:format] != 'SKOS' && ontology[:class_count] > 0 - %a.browse-onology-card{:href => "/ontologies/#{ontology[:acronym]}?p=classes"} - %p.browse-card-number - = ontology[:class_count_formatted] - %p.browse-card-text - classes - - if ontology[:individual_count] > 0 - %a.browse-onology-card{:href => "/ontologies/#{ontology[:acronym]}?p=classes"} - %p.browse-card-number - = ontology[:individual_count_formatted] - %p.browse-card-text - = ontology[:format] == 'SKOS' ? "concepts" : "instances" - - if ontology[:project_count] > 0 - %a.browse-onology-card{:href => "/ontologies/#{ontology[:acronym]}#projects_content"} - %p.browse-card-number - = ontology[:project_count] - %p.browse-card-text - projects - - if ontology[:note_count] > 0 - %a.browse-onology-card{:href => "#"} - %p.browse-card-number - = ontology[:note_count] - %p.browse-card-text - notes + - if ontology_retired?(ontology) + %span.mx-1 + = ontology_retired_badge(ontology) + - if ontology[:viewOfOnt] + %span.mx-1{data:{controller:'tooltip'}, title: "View of the ontology #{ontology[:viewOfOnt].split('/').last}"} + = render ChipButtonComponent.new(type: "clickable", text: "View") + + - if session[:user]&.admin? + %div.mx-1{title: content_tag(:div, debug(ontology), style: 'height: 300px; overflow: scroll'), data:{controller: 'tooltip', 'tooltip-interactive-value': 'true'}} + = render ChipButtonComponent.new(type: "clickable", text: "Debug" , class: 'admin-background') - else .browse-ontology-container .browse-sket diff --git a/app/components/ontology_search_input_component.rb b/app/components/ontology_search_input_component.rb new file mode 100644 index 0000000000..2bbecab9d4 --- /dev/null +++ b/app/components/ontology_search_input_component.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class OntologySearchInputComponent < ViewComponent::Base + + def initialize(name: 'search', placeholder: t('ontologies.ontology_search_prompt'), scroll_down: true) + @name = name + @placeholder = placeholder + @scroll_down = scroll_down + end +end diff --git a/app/components/ontology_search_input_component/ontology_search_input_component.html.haml b/app/components/ontology_search_input_component/ontology_search_input_component.html.haml new file mode 100644 index 0000000000..e2c5c55f2e --- /dev/null +++ b/app/components/ontology_search_input_component/ontology_search_input_component.html.haml @@ -0,0 +1,11 @@ += render SearchInputComponent.new(placeholder: @placeholder, + name: @name, scroll_down: @scroll_down, ajax_url: '/ajax/ontologies?acronym=', + item_base_url: '/ontologies/', id_key:'acronym', + actions_links: {search_ontology_content: "/search?query=o", browse_all_ontologies: "/ontologies?search=o"}) do |s| + + - s.template do + %a{href: "LINK", class: "search-content", 'data-turbo-frame': '_top'} + %p.search-element.home-searched-ontology + NAME(ACRONYM) + %p.home-result-type + TYPE \ No newline at end of file diff --git a/app/components/ontology_subscribe_button_component.rb b/app/components/ontology_subscribe_button_component.rb index 282c569a37..8b87a38b2e 100644 --- a/app/components/ontology_subscribe_button_component.rb +++ b/app/components/ontology_subscribe_button_component.rb @@ -1,17 +1,33 @@ # frozen_string_literal: true class OntologySubscribeButtonComponent < ViewComponent::Base - def initialize(ontology_id: , subscribed: , user_id:) + def initialize(ontology_id:, subscribed:, user_id:, count: 0, link: 'javascript:void(0);') super - @sub_text = subscribed ? "Unsubscribe" : "Subscribe" - @controller_params = { + @subscribed = subscribed + @sub_text = subscribed ? 'UnWatch' : 'Watch' + @link = link + @count = count + @controller_params = { data: { - controller: 'subscribe-notes', - 'subscribe-notes-ontology-id-value': ontology_id, + controller: "tooltip #{!user_id.nil? && 'subscribe-notes'}", + 'subscribe-notes-ontology-id-value': ontology_id, 'subscribe-notes-is-subbed-value': subscribed.to_s, - 'subscribe-notes-user-id-value': user_id, - action: 'click->subscribe-notes#subscribeToNotes' - } + 'subscribe-notes-user-id-value': user_id, + action: 'click->subscribe-notes#subscribeToNotes', + }, + title: title } + @link = link + @count = count + end + + def title + if @subscribed + "#{@sub_text} this resource" + elsif @count.zero? + "Be the first to watch this resource and be notified of all its updates" + else + "Join the #{@count} users, watching this resource and be notified of all its updates" + end end end diff --git a/app/components/ontology_subscribe_button_component/ontology_subscribe_button_component_controller.js b/app/components/ontology_subscribe_button_component/ontology_subscribe_button_component_controller.js index 99b8e190f8..49d67275b9 100644 --- a/app/components/ontology_subscribe_button_component/ontology_subscribe_button_component_controller.js +++ b/app/components/ontology_subscribe_button_component/ontology_subscribe_button_component_controller.js @@ -8,7 +8,7 @@ export default class extends Controller { isSubbed: Boolean, userId: String } - static targets = ["error", "loader"] + static targets = ["error", "loader", "text" ,"count"] subscribeToNotes() { let ontologyId = this.ontologyIdValue @@ -23,16 +23,26 @@ export default class extends Controller { type: "POST", url: url, dataType: "json", - success: () => { + success: (data) => { // Change subbed value on a element this.#hideSpinner() + + if(!data.updated_sub){ + this.#showError() + return + } + let linkElement = $(this.element); this.isSubbedValue = !isSubbed // Change button text - let txt = linkElement.html(); - let newButtonText = txt.match("Unsubscribe") ? txt.replace("Unsubscribe", "Subscribe") : txt.replace("Subscribe", "Unsubscribe"); - linkElement.html(newButtonText); + let txt = this.textTarget.innerHTML + let count = parseInt(this.countTarget.innerHTML) + + let newButtonText = txt.match("UnWatch") ? txt.replace("UnWatch", "Watch") : txt.replace("Watch", "UnWatch"); + this.element.setAttribute('title', newButtonText + ' this ontology') + this.textTarget.innerHTML = newButtonText + this.countTarget.innerHTML = newButtonText.match("UnWatch") ? (count + 1) : (count - 1) }, error: () => { this.#hideSpinner() diff --git a/app/components/pill_button_component.rb b/app/components/pill_button_component.rb new file mode 100644 index 0000000000..5371bee439 --- /dev/null +++ b/app/components/pill_button_component.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class PillButtonComponent < ViewComponent::Base + + def initialize(text: nil) + super + @text = text + end +end diff --git a/app/components/pill_button_component/pill_button_component.html.haml b/app/components/pill_button_component/pill_button_component.html.haml new file mode 100644 index 0000000000..ffcb9ff340 --- /dev/null +++ b/app/components/pill_button_component/pill_button_component.html.haml @@ -0,0 +1,2 @@ +%button.pill-button + = @text || content \ No newline at end of file diff --git a/app/components/popup_link_text_component.rb b/app/components/popup_link_text_component.rb new file mode 100644 index 0000000000..d6dbc41e4d --- /dev/null +++ b/app/components/popup_link_text_component.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class PopupLinkTextComponent < LinkTextComponent + + def initialize(text:) + super(text: text, icon: 'icons/popup-link.svg') + end + +end diff --git a/app/components/rounded_button_component.rb b/app/components/rounded_button_component.rb new file mode 100644 index 0000000000..b2a0ce49c6 --- /dev/null +++ b/app/components/rounded_button_component.rb @@ -0,0 +1,21 @@ +class RoundedButtonComponent < ViewComponent::Base + def initialize(icon: "json.svg", link: "#", size: "small", target: '', title: '') + @icon = icon + @link = link + @size = size + @target = target + @title = title + end + + def size + case @size + when "small" + ["32px", "1", "16px"] + when "medium" + ["45px", "1", "23px"] + when "big" + ["100px", "2.5", "50px"] + end + end + +end \ No newline at end of file diff --git a/app/components/rounded_button_component/rounded_button_component.html.haml b/app/components/rounded_button_component/rounded_button_component.html.haml new file mode 100644 index 0000000000..f5f23aad59 --- /dev/null +++ b/app/components/rounded_button_component/rounded_button_component.html.haml @@ -0,0 +1,2 @@ +%a.rounded-button{:href => @link, style: "height:"+size[0]+"; width:"+size[0]+"; border-radius:"+size[2]+";", target:@target, title: @title, 'data-controller':'tooltip'} + = inline_svg_tag @icon, style: "transform: scale("+size[1]+");" diff --git a/app/components/search_input_component.rb b/app/components/search_input_component.rb new file mode 100644 index 0000000000..10474876c0 --- /dev/null +++ b/app/components/search_input_component.rb @@ -0,0 +1,32 @@ +# frozen_string_literal: true + +class SearchInputComponent < ViewComponent::Base + + renders_one :template + + def initialize(id: '', + name: '', placeholder: '', actions_links: {}, + scroll_down: true, use_cache: true, + ajax_url:, + item_base_url:, + id_key:, + links_target: '_top') + @id = id + @name = name + @placeholder = placeholder + @actions_links = actions_links + @use_cache = use_cache + @scroll_down = scroll_down + @ajax_url = ajax_url + @item_base_url = item_base_url + @id_key = id_key + @links_target = links_target + end + def action_link_info(value) + if value.is_a?(Hash) + [value[:link] , value[:target]] + else + [value, '_top'] + end + end +end diff --git a/app/components/search_input_component/search_input_component.html.haml b/app/components/search_input_component/search_input_component.html.haml new file mode 100644 index 0000000000..e775ac14e7 --- /dev/null +++ b/app/components/search_input_component/search_input_component.html.haml @@ -0,0 +1,21 @@ +%div.search-inputs{id: @id, 'data-controller': 'search-input', + 'data-search-input-ajax-url-value': @ajax_url, + 'data-search-input-item-link-base-value': @item_base_url, + 'data-search-input-id-key-value': @id_key, + 'data-search-input-cache-value': @use_cache.to_s, + 'data-search-input-scroll-down-value': @scroll_down.to_s} + + = render Input::InputFieldComponent.new(name: @name, placeholder: @placeholder, + data: {'action': 'input->search-input#search blur->search-input#blur', + 'search-input-target': 'input'}) + .search-container{'data-search-input-target': 'dropDown', 'data-action': 'mousedown->search-input#prevent'} + - @actions_links.each do |key, value| + - link, target = action_link_info(value) + %a.search-content#search-content{href: link, 'data-turbo-frame': target, 'data-search-input-target': 'actionLink'} + %p.mb-0 + %div + %img{src: asset_path("loop.svg")}/ + %p + =key.to_s.humanize + %template{'data-search-input-target': 'template'} + = template \ No newline at end of file diff --git a/app/components/search_input_component/search_input_component_controller.js b/app/components/search_input_component/search_input_component_controller.js new file mode 100644 index 0000000000..2d2e624e2f --- /dev/null +++ b/app/components/search_input_component/search_input_component_controller.js @@ -0,0 +1,164 @@ +import {Controller} from "@hotwired/stimulus" +import useAjax from "../../javascript/mixins/useAjax"; + +// Connects to data-controller="search-input" +export default class extends Controller { + static targets = ["input", "dropDown", "actionLink", "template"] + static values = { + items: Array, + ajaxUrl: String, + itemLinkBase: String, + idKey: String, + cache: {type: Boolean, default: true}, + scrollDown: {type: Boolean, default: true} + } + + connect() { + this.input = this.inputTarget + this.dropDown = this.dropDownTarget + this.actionLinks = this.actionLinkTargets + this.items = this.itemsValue + } + + search() { + this.#searchInput() + } + + prevent(event){ + event.preventDefault(); + } + blur() { + this.dropDown.style.display = "none"; + this.input.classList.remove("home-dropdown-active"); + } + + #inputValue() { + return this.input.value.trim() + } + + #useCache() { + return this.cacheValue + } + #scrollDownEnabled(){ + return this.scrollDownValue + } + + #scrollDown(currentScroll) { + const startPosition = window.pageYOffset; + const distance = 300 - currentScroll; + const duration = 1000; + let start = null; + + function scrollAnimation(timestamp) { + if (!start) start = timestamp; + const progress = timestamp - start; + const scrollPosition = startPosition + easeInOutCubic(progress, 0, distance, duration); + window.scrollTo(0, scrollPosition); + if (progress < duration) { + window.requestAnimationFrame(scrollAnimation); + } + } + + function easeInOutCubic(t, b, c, d) { + t /= d / 2; + if (t < 1) return c / 2 * t * t * t + b; + t -= 2; + return c / 2 * (t * t * t + 2) + b; + } + + window.requestAnimationFrame(scrollAnimation); + } + + #fetchItems() { + if (this.items.length !== 0 && this.#useCache()) { + this.#renderLines() + } else { + useAjax({ + type: "GET", + url: this.ajaxUrlValue + this.#inputValue(), + dataType: "json", + success: (data) => { + this.items = data.map(x => { return {...x, link: (this.itemLinkBaseValue + x[this.idKeyValue])}} ) + this.#renderLines() + }, + error: () => { + console.log("error") + //TODO show errors + } + }) + } + } + + #renderLines() { + const inputValue = this.#inputValue(); + let results_list = [] + if (inputValue.length > 0) { + + this.actionLinks.forEach(action => { + const content = action.querySelector('p') + content.innerHTML = inputValue + const currentURL = new URL(action.href, document.location) + currentURL.searchParams.set(currentURL.searchParams.keys().next().value, inputValue) + action.href = currentURL.pathname + currentURL.search + }) + + this.dropDown.innerHTML = "" + let breaker = 0 + for (let i = 0; i < this.items.length; i++) { + if (breaker === 4) { + break; + } + // Get the current item from the ontologies array + const item = this.items[i]; + + let text = Object.values(item).reduce((acc, value) => acc + value, "") + + + // Check if the item contains the substring + if (text.toLowerCase().includes(inputValue.toLowerCase())) { + results_list.push(item); + breaker = breaker + 1 + } + } + + results_list.forEach((item) => { + let link = this.#renderLine(item); + this.dropDown.appendChild(link); + }); + + this.actionLinks.forEach(x => this.dropDown.appendChild(x)) + this.dropDown.style.display = "block"; + + this.input.classList.add("home-dropdown-active"); + if ((window.scrollY < 300) && this.#scrollDownEnabled()) { + this.#scrollDown(window.scrollY); + } + + } else { + this.dropDown.style.display = "none"; + this.input.classList.remove("home-dropdown-active"); + } + + } + + #renderLine(item) { + let template = this.templateTarget.content + let newElement = template.firstElementChild + let string = newElement.outerHTML + + Object.entries(item).forEach( ([key, value]) => { + key = key.toString().toUpperCase() + if (key === 'TYPE'){ + value = value.toString().split('/').slice(-1) + } + const regex = new RegExp('\\b' + key + '\\b', 'gi'); + string = string.replace(regex, value.toString()) + }) + + return new DOMParser().parseFromString(string, "text/html").body.firstElementChild + } + + #searchInput() { + this.#fetchItems() + } +} diff --git a/app/components/select_input_component.rb b/app/components/select_input_component.rb index 9bcfe5d1df..59bc95d504 100644 --- a/app/components/select_input_component.rb +++ b/app/components/select_input_component.rb @@ -2,21 +2,50 @@ class SelectInputComponent < ViewComponent::Base - def initialize(id:, name:, values:, selected:, multiple: false, open_to_add_values: false) + def initialize(id:, name:, values:, selected: nil, multiple: false, open_to_add_values: false, required: false, data: {}, placeholder: '') super - @id = id + @id = id || '' @name = name @values = values @selected = selected @multiple = multiple @open_to_add_values = open_to_add_values + @placeholder = placeholder + @data = data + @required = required end + + def call + select_input_tag(@id, @values, @selected, multiple: @multiple, open_to_add_values: @open_to_add_values) + end + + def call + select_input_tag(@id, @name, @values, @selected, multiple: @multiple, open_to_add_values: @open_to_add_values, + placeholder: @placeholder, required: @required) + end + + private + + def select_input_tag(id, name, values, selected, options = {}) + multiple = options[:multiple] || false + open_to_add_values = options[:open_to_add_values] || false + required = options[:required] || false + placeholder = options[:placeholder] || '' + data = @data.merge({ + 'select-input-multiple-value': multiple, + 'select-input-open-add-value': open_to_add_values, + 'select-input-required-value': required, + }) + data[:controller] = "#{data[:controller]} select-input" + + select_html_options = { + id: "select_#{id}", + placeholder: placeholder, + autocomplete: 'off', + multiple: multiple, + data: data + } + select_tag(name, options_for_select(values, selected), select_html_options) - def options_values - if @selected.nil? || @selected.empty? - @selected = 0 - @values.unshift('') - end - options_for_select(@values, @selected) end end diff --git a/app/components/select_input_component/select_input_component.html.haml b/app/components/select_input_component/select_input_component.html.haml deleted file mode 100644 index a46f0ad299..0000000000 --- a/app/components/select_input_component/select_input_component.html.haml +++ /dev/null @@ -1,10 +0,0 @@ -%div{:data => { controller: "select-input", 'select-input': {'multiple-value': @multiple.to_s}}} - = select_tag(@name, options_values, { multiple: @multiple, class: "form-control", id: "select_#{@id}", data: { action: "select-input#toggleOtherValue", "select-input-target": "selectedValues" } }) - - %div.d-flex.mt-1{style: "display:#{@open_to_add_values ? 'none !important;' : 'block;'}"} - = text_field_tag("add_#{@id}", nil, :style => "margin-right: 1em;width: 16em;display: none;", :placeholder => "Or provide the value", - data: {action: "keydown.enter->select-input#addValue", "select-input-target": "inputValueField"}, class: 'metadataInput form-control form-control-sm') - - %button.btn.btn-primary.btn-sm.add-value-btn{id: "btnAdd#{@id}", style: "display: none;", - data: { action: "select-input#addValue", "select-input-target": "btnValueField"}} - Add new value \ No newline at end of file diff --git a/app/components/select_input_component/select_input_component_controller.js b/app/components/select_input_component/select_input_component_controller.js index 7fb94e380a..1ec8b6499a 100644 --- a/app/components/select_input_component/select_input_component_controller.js +++ b/app/components/select_input_component/select_input_component_controller.js @@ -1,137 +1,48 @@ import {Controller} from "@hotwired/stimulus" -import {useChosen} from "../../javascript/mixins/useChosen"; +import {useTomSelect} from "../../javascript/mixins/useTomSelect" export default class extends Controller { - static values = { - other: {type: Boolean, default: true}, - multiple: {type: Boolean, default: false} - } + multiple: {type: Boolean, default: false}, + openAdd: {type: Boolean, default: false}, + required: {type: Boolean, default: false} + }; - static targets = ["btnValueField", "inputValueField", "selectedValues"] connect() { - this.initMultipleSelect() - this.#displayOtherValueField() - } - - toggleOtherValue() { - if (this.otherValue && !this.multipleValue) { - this.#toggle() - } - } - - addValue(event) { - event.preventDefault() - - if (this.inputValueFieldTarget.value) { - let newOption = this.inputValueFieldTarget.value; - this.#addNewOption(newOption) - this.#selectNewOption(newOption) - if (!this.multipleValue) { - this.#hideOtherValueField() - } - } - } - - - initMultipleSelect() { - this.#addEmptyOption() - useChosen(this.selectedValuesTarget, { - width: '100%', - search_contains: true, - allow_single_deselect: !this.multipleValue, - }, (event) => { - if(this.multipleValue){ - let selected = event.target.selectedOptions - if (selected.length === 0) { - this.#selectEmptyOption() - } else { - this.#unSelectEmptyOption() + let myOptions = {} + + myOptions = { + render: { + option: (data) => { + return `
    ${data.text}
    ` + }, + item: (data) => { + return `
    ${data.text}
    ` } } - }) - } - - #selectEmptyOption() { - this.emptyOption.selected = true - this.emptyOption.disabled = false - } - - #unSelectEmptyOption() { - this.emptyOption.selected = false - this.emptyOption.disabled = true - } - - #addEmptyOption() { - this.emptyOption = document.createElement("option") - this.emptyOption.innerHTML = '' - this.emptyOption.value = '' - this.selectedValuesTarget.prepend(this.emptyOption) - } - - #selectNewOption(newOption) { - let selectedOptions = this.#selectedOptions(); - - - if (Array.isArray(selectedOptions)) { - selectedOptions.push(newOption); - } else { - selectedOptions = []; - selectedOptions.push(newOption) } - this.selectedValuesTarget.value = selectedOptions if (this.multipleValue) { - const options = this.selectedValuesTarget.options - for (const element of options) { - element.selected = selectedOptions.indexOf(element.value) >= 0; + myOptions['onItemAdd'] = function(){ + this.setTextboxValue(''); + this.refreshOptions(); } - jQuery(this.selectedValuesTarget).trigger("chosen:updated") + myOptions['plugins'] = ['remove_button']; } - } - - #addNewOption(newOption) { - let option = document.createElement("option"); - option.value = newOption; - option.text = newOption; - this.selectedValuesTarget.add(option) - } - - #selectedOptions() { - if (this.multipleValue) { - const selectedOptions = []; - for (let option of this.selectedValuesTarget.options) { - if (option.selected) { - selectedOptions.push(option.value); - } - } - return selectedOptions - } else { - return this.selectedValuesTarget.value + if (this.openAddValue) { + myOptions['create'] = true; } - } - #toggle() { - if (this.selectedValuesTarget.value === 'other') { - this.#displayOtherValueField() - } else { - this.#hideOtherValueField() - } + this.select = useTomSelect(this.element, myOptions, this.#triggerChange.bind(this)) } - #displayOtherValueField() { - this.inputValueFieldTarget.value = "" - this.btnValueFieldTarget.style.display = 'block' - this.inputValueFieldTarget.style.display = 'block' - } + #triggerChange() { + if (this.requiredValue && !this.multipleValue && this.select.getValue() === ""){ + this.select.setValue(Object.keys(this.select.options)[0]) + } - #hideOtherValueField() { - this.inputValueFieldTarget.value = "" - this.btnValueFieldTarget.style.display = 'none' - this.inputValueFieldTarget.style.display = 'none' + document.dispatchEvent(new Event('change', { target: this.element })) } - - } \ No newline at end of file diff --git a/app/components/square_badge_component.rb b/app/components/square_badge_component.rb new file mode 100644 index 0000000000..9d85a8c34f --- /dev/null +++ b/app/components/square_badge_component.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class SquareBadgeComponent < ViewComponent::Base + + def initialize(label: , count: ,link: nil) + @label = label + @count = count + @link = link + end + def call + return if @count.to_i.zero? + + link_to(@link, class: 'browse-onology-card', 'data-turbo' => 'false') do + concat(content_tag(:p, @count, class: 'browse-card-number')) + concat(content_tag(:p, @label, class: 'browse-card-text')) + end + end + +end diff --git a/app/components/submission_metadata_component.rb b/app/components/submission_metadata_component.rb new file mode 100644 index 0000000000..69c23f9bdf --- /dev/null +++ b/app/components/submission_metadata_component.rb @@ -0,0 +1,52 @@ +# frozen_string_literal: true + +class SubmissionMetadataComponent < ViewComponent::Base + include ApplicationHelper, MetadataHelper,OntologiesHelper, AgentHelper + + def initialize(submission: , submission_metadata:) + super + @submission = submission + + @json_metadata = submission_metadata + metadata_list = {} + # Get extracted metadata and put them in a hash with their label, if one, as value + @json_metadata.each do |metadata| + metadata_list[metadata["attribute"]] = metadata["label"] + end + + @metadata_list = metadata_list.sort + end + + def display_attributes(metadata) + if Array(@submission.send(metadata)).empty? + out = 'N/A' + else + out = Array(@submission.send(metadata)).map do |value| + content_tag(:div, class: 'm-1 f32') do + display_attribute(metadata, value) + end + end.join + end + out.html_safe + end + def attribute_help_text(attr) + if !attr["namespace"].nil? + help_text = "#{attr["namespace"]}:#{attr["attribute"]}" + else + help_text = "bioportal:#{attr["attribute"]}" + end + + if (attr["metadataMappings"] != nil) + help_text += " (#{attr["metadataMappings"].join(", ")})" + end + + if (!attr["enforce"].nil? && attr["enforce"].include?("uri")) + help_text += "
    This metadata should be an URI" + end + + if (attr["helpText"] != nil) + help_text += "

    #{attr["helpText"]}" + end + help_text.html_safe + end +end diff --git a/app/components/submission_metadata_component/submission_metadata_component.html.haml b/app/components/submission_metadata_component/submission_metadata_component.html.haml new file mode 100644 index 0000000000..c244e76858 --- /dev/null +++ b/app/components/submission_metadata_component/submission_metadata_component.html.haml @@ -0,0 +1,18 @@ += render TableComponent.new(id: 'submission_metadata_table', borderless: true, layout_fixed: true) do |t| + - t.header do |h| + - h.th(width:'15%') {"Label"} + - h.th(width:'50%') {"Value"} + - h.th(width:'35%') {"Metadata"} + + - @metadata_list.each do |metadata, label| + - t.row do |r| + - r.td do + = label || metadata.underscore.humanize + - r.td do + .d-flex.flex-wrap.align-items-center + = display_attributes(metadata) + - r.td {attribute_help_text(attr_metadata(metadata))} +:javascript + $("#submission_metadata_table").dataTable({ paging: false, autoWidth: false }) + + diff --git a/app/components/submission_status_component.rb b/app/components/submission_status_component.rb new file mode 100644 index 0000000000..eb33b10bec --- /dev/null +++ b/app/components/submission_status_component.rb @@ -0,0 +1,29 @@ +class SubmissionStatusComponent < ViewComponent::Base + include OntologiesHelper + + def initialize(submission, latest) + @submission = submission + @latest = latest + end + + def submission_version + @submission.version.to_s if @submission.version.present? + end + + def submission_link + if @submission.version.present? + if @submission.ontology.summaryOnly || !@latest + submission_version + else + link_to submission_version, ontology_path(@submission.ontology.acronym) + end + end + end + + def submission_status + return unless @submission.submissionStatus.present? + statuses = submission_status2string(@submission) + end + +end + \ No newline at end of file diff --git a/app/components/submission_status_component/submission_status_component.html.haml b/app/components/submission_status_component/submission_status_component.html.haml new file mode 100644 index 0000000000..c45bec11d8 --- /dev/null +++ b/app/components/submission_status_component/submission_status_component.html.haml @@ -0,0 +1,8 @@ +#submission-status{style: "display: -webkit-inline-box"} + - if @submission.version.present? + %p= submission_link + - else + %p unknown + .spacer + - submission_status = status_string(@submission) + = render Display::InfoTooltipComponent.new(text: submission_status, icon: submission_status_icons(submission_status)) \ No newline at end of file diff --git a/app/components/summary_section_component.rb b/app/components/summary_section_component.rb new file mode 100644 index 0000000000..0ca33932f6 --- /dev/null +++ b/app/components/summary_section_component.rb @@ -0,0 +1,17 @@ +# frozen_string_literal: true + +class SummarySectionComponent < ViewComponent::Base + renders_many :action_links + + def initialize(title: , link: nil, link_title: nil, show_card: true) + super + @title = title + @link = link + @link_title = link_title + @show_card = show_card + end + + def show_card? + @show_card + end +end diff --git a/app/components/summary_section_component/summary_section_component.html.haml b/app/components/summary_section_component/summary_section_component.html.haml new file mode 100644 index 0000000000..c433568662 --- /dev/null +++ b/app/components/summary_section_component/summary_section_component.html.haml @@ -0,0 +1,19 @@ +%h2.card_title + %span.mr-2 + = @title + - if @link + %span + = link_to(@link, target: "_blank") do + = render Display::InfoTooltipComponent.new(text: @link_title) + + - if action_links? + %span + = render Layout::HorizontalListComponent.new do |l| + - action_links.each { |link| l.element { raw link }} + +- if show_card? + = render Layout::CardComponent.new do + = content +- else + %div + = content \ No newline at end of file diff --git a/app/components/switch_input_component.rb b/app/components/switch_input_component.rb index e8ba664312..ce0fd259c6 100644 --- a/app/components/switch_input_component.rb +++ b/app/components/switch_input_component.rb @@ -3,7 +3,7 @@ class SwitchInputComponent < ViewComponent::Base - def initialize(id:, name: , label: nil, value: '', checked: false, boolean_switch: false) + def initialize(id:, name: , label: '', value: '', checked: false, boolean_switch: false, style: nil) super @id = id @name = name @@ -11,10 +11,11 @@ def initialize(id:, name: , label: nil, value: '', checked: false, boolean_switc @value = value.nil? || value.empty? ? @name : value @checked = checked @boolean_switch = boolean_switch + @style = style end def boolean_switch_action - "this.previousElementSibling.value = this.previousElementSibling.value !== 'true'" if @boolean_switch + "this.parentElement.previousElementSibling.value = this.parentElement.previousElementSibling.value !== 'true'" if @boolean_switch end def check_box_name diff --git a/app/components/switch_input_component/switch_input_component.html.haml b/app/components/switch_input_component/switch_input_component.html.haml index 1f74a7c247..51af0ecacc 100644 --- a/app/components/switch_input_component/switch_input_component.html.haml +++ b/app/components/switch_input_component/switch_input_component.html.haml @@ -1,6 +1,8 @@ -%div.custom-control.custom-switch +%div.switch-filter + - if content || !@label.empty? + = content_tag(:div, content || @label, style: @style) - if @boolean_switch = hidden_field_tag @name, @value - = check_box_tag check_box_name, @value, @checked, class: 'custom-control-input', id: check_box_id, onChange: "#{boolean_switch_action}" - %label.custom-control-label{for: check_box_id} - = content || @label \ No newline at end of file + %label.switch{for: check_box_id} + = check_box_tag check_box_name, @value, @checked, class: '', id: check_box_id, onChange: "#{boolean_switch_action}" + %span.slider \ No newline at end of file diff --git a/app/components/tab_item_component.rb b/app/components/tab_item_component.rb new file mode 100644 index 0000000000..92c574b456 --- /dev/null +++ b/app/components/tab_item_component.rb @@ -0,0 +1,55 @@ +# frozen_string_literal: true + +class TabItemComponent < ViewComponent::Base + + include ActionView::Helpers::UrlHelper + + def initialize(id: nil, title: nil, path: nil, page_name: '', selected: false) + super + @id = id + @title = title + @path = path + @page_name = page_name + @selected = selected + end + + def selected_item? + @selected + end + + def item_id + id.parameterize.underscore + end + + def target_id + "#{item_id}_content" + end + + + def id + @id || @title + end + + def title + @title&.humanize + end + + def active_class + selected_item? ? 'active show' : '' + end + + def page_name + @page_name + end + + def call + if title && !title.empty? + link_to(title, @path, id: "#{item_id}_tab", class: "#{active_class} tab-link") + else + link_to(@path, id: "#{item_id}_tab", class: "#{active_class} tab-link") do + content + end + end + end + +end diff --git a/app/components/table_cell_component.rb b/app/components/table_cell_component.rb new file mode 100644 index 0000000000..2e459cb32a --- /dev/null +++ b/app/components/table_cell_component.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class TableCellComponent < ViewComponent::Base + + def initialize(width: nil, colspan: nil,type: 'td') + super + @width = width + @type = type + @colspan = colspan + end + + def call + options = {} + options[:width] = @width if @width + options[:colspan] = @colspan if @colspan + content_tag(@type, content&.html_safe, options) + end +end diff --git a/app/components/table_component.rb b/app/components/table_component.rb new file mode 100644 index 0000000000..9670464db6 --- /dev/null +++ b/app/components/table_component.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +class TableComponent < ViewComponent::Base + + renders_one :header, TableRowComponent + renders_many :rows, TableRowComponent + + def initialize(id: '', stripped: true, borderless: false, layout_fixed: false ) + super + @id = id + @stripped = stripped + @borderless = borderless + @layout_fixed = layout_fixed + end + + def stripped_class + @stripped ? 'table-content-stripped' : '' + end + + def borderless_class + @borderless ? 'table-content-borderless' : '' + end + + def layout_fixed_class + @layout_fixed ? 'table-layout-fixed' : '' + end + + def add_row(*array, &block) + self.row.create(*array, &block) + end +end diff --git a/app/components/table_component/table_component.html.haml b/app/components/table_component/table_component.html.haml new file mode 100644 index 0000000000..ed479fb66c --- /dev/null +++ b/app/components/table_component/table_component.html.haml @@ -0,0 +1,7 @@ +%table.table-content{id: @id, class: stripped_class + ' ' + borderless_class + ' ' + layout_fixed_class} + %thead + = header + %tbody{id: "#{@id}_table_body"} + - rows.each do |row| + = row + = content \ No newline at end of file diff --git a/app/components/table_row_component.rb b/app/components/table_row_component.rb new file mode 100644 index 0000000000..68620a05c3 --- /dev/null +++ b/app/components/table_row_component.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +class TableRowComponent < ViewComponent::Base + + renders_many :cells, TableCellComponent + + def initialize(id: '', class_css: '') + super + @id = id + @class_css = class_css + end + + def create(*array, &block) + array.each do |key_value| + key, value = key_value.to_a.first + self.cell(type: key) { value&.to_s } + end + block.call(self) if block_given? + end + + def th(width: nil, colspan: nil, &block) + self.cell(type: 'th', width: width, colspan: colspan, &block) + end + + def td(width: nil, colspan: nil, &block) + self.cell(type: 'td', width: width, colspan: colspan, &block) + end +end diff --git a/app/components/table_row_component/table_row_component.html.haml b/app/components/table_row_component/table_row_component.html.haml new file mode 100644 index 0000000000..c25e45eee5 --- /dev/null +++ b/app/components/table_row_component/table_row_component.html.haml @@ -0,0 +1,4 @@ +%tr{id: @id, class: @class_css} + - cells.each do |cell| + = cell + = content \ No newline at end of file diff --git a/app/components/tabs_container_component.rb b/app/components/tabs_container_component.rb new file mode 100644 index 0000000000..5db79fc44e --- /dev/null +++ b/app/components/tabs_container_component.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +class TabsContainerComponent < ViewComponent::Base + + renders_many :items, TabItemComponent + renders_many :item_contents + renders_one :pinned_right + + def initialize(id: '', url_parameter: nil, type: 'primary') + super + @url_parameter = url_parameter + @type = type + @id = id + end + + def container_class + case @type + when 'primary' + 'tabs-container' + when 'outline' + 'tabs-container outline-tabs' + when 'pill' + 'pill-tabs-container' + else + 'tabs-container' + end + end + + def item_target(item) + "##{@id}#{item.target_id}" + end + + def item_content_id(item) + @id + item.target_id + end + + def tabs_container_data(item) + { + toggle: 'tab', + target: item_target(item), + 'tab-id': item.id, + 'tab-title': item.page_name, + 'url-parameter': @url_parameter, + action: 'click->tabs-container#selectTab' + } + end +end diff --git a/app/components/tabs_container_component/tabs_container_component.html.haml b/app/components/tabs_container_component/tabs_container_component.html.haml new file mode 100644 index 0000000000..b47c875f3f --- /dev/null +++ b/app/components/tabs_container_component/tabs_container_component.html.haml @@ -0,0 +1,17 @@ +%div{data: {controller:'tabs-container'}, class: container_class, id: @id} + %div + .tab-items.nav + - items.each do |item| + %div{data: tabs_container_data(item), class: item.active_class + ' nav-item'} + = item + - unless @type.eql?('pill') + %hr + - if pinned_right? + %div.d-flex.mx-1 + = pinned_right + +.tab-content + - item_contents.each_with_index do |item_content, index| + %div.tab-pane{id: item_content_id(items[index]), class: items[index].active_class} + = item_content + diff --git a/app/components/tabs_container_component/tabs_container_component_controller.js b/app/components/tabs_container_component/tabs_container_component_controller.js new file mode 100644 index 0000000000..9991b699f0 --- /dev/null +++ b/app/components/tabs_container_component/tabs_container_component_controller.js @@ -0,0 +1,43 @@ +import {Controller} from "@hotwired/stimulus"; +import {HistoryService} from "../../javascript/mixins/useHistory"; + +export default class extends Controller { + + connect() { + this.event = null + } + + + selectTab(event) { + this.event = event + if (this.#parameter()) { + this.#updateURL() + } + this.element.dispatchEvent(new CustomEvent("tab-selected", { + bubbles: true, + detail: {data: {selectedTab: this.#pageId()}} + })) + } + + #pageId() { + return this.event.currentTarget.getAttribute("data-tab-id") + } + + #title() { + return this.event.currentTarget.getAttribute("data-tab-title") + } + + #parameter() { + return this.event.currentTarget.getAttribute("data-url-parameter") + } + + + #url() { + return `?${this.#parameter()}=${this.#pageId()}` + } + + #updateURL() { + (new HistoryService()).pushState({[this.#parameter()]: this.#pageId()}, this.#title(), this.#url()); + } + +} diff --git a/app/components/text_area_field_component.rb b/app/components/text_area_field_component.rb new file mode 100644 index 0000000000..5da424e33f --- /dev/null +++ b/app/components/text_area_field_component.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class TextAreaFieldComponent < ViewComponent::Base + + def initialize(value: , see_more_text:'See more...' , see_less_text: 'See less...') + super + @value = value + @see_more_text = see_more_text + @see_less_text = see_less_text + end + +end \ No newline at end of file diff --git a/app/components/text_area_field_component/text_area_field_component.html.haml b/app/components/text_area_field_component/text_area_field_component.html.haml new file mode 100644 index 0000000000..6a58213bef --- /dev/null +++ b/app/components/text_area_field_component/text_area_field_component.html.haml @@ -0,0 +1,5 @@ +%div{data:{controller:"text-truncate", 'text-truncate-more-text-value': @see_more_text , 'text-truncate-less-text-value': @see_less_text}} + %span.text-content{'data-text-truncate-target': 'content'} + = @value + %span.see_more_text{data:{'text-truncate-target': 'button', 'action':"click->text-truncate#toggle"}} + = @see_more_text \ No newline at end of file diff --git a/app/components/text_field_component.rb b/app/components/text_field_component.rb deleted file mode 100644 index 63fe0c2426..0000000000 --- a/app/components/text_field_component.rb +++ /dev/null @@ -1,9 +0,0 @@ -# frozen_string_literal: true - -class TextFieldComponent < FormGroupComponent - - def initialize(object:, name: nil, method:, label: nil, required: false, inline: true) - super - @object = object - end -end diff --git a/app/components/text_field_component/text_field_component.html.haml b/app/components/text_field_component/text_field_component.html.haml deleted file mode 100644 index 9b9c8e6867..0000000000 --- a/app/components/text_field_component/text_field_component.html.haml +++ /dev/null @@ -1,7 +0,0 @@ -= render FormGroupComponent.new(object: @object, name: @name, method: @method_name, label: @label_text, inline: @inline) do |c| - = text_field c.name, c.method_name , value: c.value, class: "form-control" - - c.help do - = help - - if submit? - - c.submit do - = submit \ No newline at end of file diff --git a/app/components/tree_infinite_scroll_component/tree_infinite_scroll_component.html.haml b/app/components/tree_infinite_scroll_component/tree_infinite_scroll_component.html.haml index a6d6990599..cbaaba03a3 100644 --- a/app/components/tree_infinite_scroll_component/tree_infinite_scroll_component.html.haml +++ b/app/components/tree_infinite_scroll_component/tree_infinite_scroll_component.html.haml @@ -11,5 +11,5 @@ - c.error do %div.text-wrap - = render AlertMessageComponent.new(id: "#{@id}_view_alert") do + = render Display::AlertComponent.new(type:'info') do = error \ No newline at end of file diff --git a/app/components/turbo_frame_component.rb b/app/components/turbo_frame_component.rb index 92a82611cd..d25322e154 100644 --- a/app/components/turbo_frame_component.rb +++ b/app/components/turbo_frame_component.rb @@ -30,6 +30,9 @@ def turbo_frame_html_options @html_options[:class] += " #{out[:class]}" end + if @src && !@src.empty? + @html_options[:src] = @src + end @html_options end diff --git a/app/components/turbo_frame_component/turbo_frame_component.html.haml b/app/components/turbo_frame_component/turbo_frame_component.html.haml index 6271513af8..4ffcb9641e 100644 --- a/app/components/turbo_frame_component/turbo_frame_component.html.haml +++ b/app/components/turbo_frame_component/turbo_frame_component.html.haml @@ -1,5 +1,5 @@ %div.d-flex.flex-column{data: {controller: 'turbo-frame-error'}} - = turbo_frame_tag @id, src: @src , **turbo_frame_html_options do + = turbo_frame_tag @id, **turbo_frame_html_options do %div.hide-if-loading = content %div.show-if-loading.my-auto.mx-auto @@ -9,4 +9,4 @@ %div.p-3 = render LoaderComponent.new %div{'data-turbo-frame-error-target': 'errorMessage', style:'display: none; width: 100%'} - = render AlertMessageComponent.new(id: "#{@id}_error-message", type:'danger') \ No newline at end of file + = render Display::AlertComponent.new(type:'danger') \ No newline at end of file diff --git a/app/components/turbo_modal_component.rb b/app/components/turbo_modal_component.rb index 24356efefa..3cb4af7782 100644 --- a/app/components/turbo_modal_component.rb +++ b/app/components/turbo_modal_component.rb @@ -3,11 +3,12 @@ class TurboModalComponent < ViewComponent::Base include Turbo::FramesHelper - def initialize(id: '', title:'', size: 'modal-lg') + def initialize(id: '', title: '', size: 'modal-lg', show: false) super @id = id @title = title @size = size + @show = show end end diff --git a/app/components/turbo_modal_component/turbo_modal_component.html.haml b/app/components/turbo_modal_component/turbo_modal_component.html.haml index 0d44909216..e5ad175038 100644 --- a/app/components/turbo_modal_component/turbo_modal_component.html.haml +++ b/app/components/turbo_modal_component/turbo_modal_component.html.haml @@ -1,11 +1,11 @@ -%div.modal{id: @id, 'data-controller':"turbo-modal"} +%div.modal{id: @id, 'data-controller':"turbo-modal", 'data-turbo-modal-show-value': @show.to_s} %div.modal-dialog{class: @size} %div.modal-content %div.modal-header %h5.modal-title = @title %button.close{type:'button', data: { action: "turbo-modal#hide" }} - %span × + %span.shape.btn.btn-primary.p-1 × %div.modal-body = render TurboFrameComponent.new(id: 'application_modal_content', data: { 'turbo-modal-target': 'content'}) do = content diff --git a/app/components/turbo_modal_component/turbo_modal_component_controller.js b/app/components/turbo_modal_component/turbo_modal_component_controller.js index acc493a836..2942770ed8 100644 --- a/app/components/turbo_modal_component/turbo_modal_component_controller.js +++ b/app/components/turbo_modal_component/turbo_modal_component_controller.js @@ -4,6 +4,16 @@ import ShowModalController from "../../javascript/controllers/show_modal_control export default class extends ShowModalController { static targets = ["content"] + static values = { + show: Boolean + } + + connect() { + super.connect(); + if (this.showValue) { + this.show() + } + } show() { this.modal.showModal(this.element) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index d9b2eefce2..7e11740825 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -64,6 +64,10 @@ class ApplicationController < ActionController::Base before_action :set_global_thread_values, :domain_ontology_set, :authorize_miniprofiler, :clean_empty_strings_from_params_arrays, :init_trial_license + def show_image_modal + url = params[:url] + render turbo_stream: helpers.prepend('application_modal_content') { helpers.image_tag(url, style:'width: 100%') } + end def set_global_thread_values Thread.current[:session] = session diff --git a/app/controllers/notes_controller.rb b/app/controllers/notes_controller.rb index 83051c4e1c..b47208ac24 100644 --- a/app/controllers/notes_controller.rb +++ b/app/controllers/notes_controller.rb @@ -103,7 +103,7 @@ def create success_message = 'New comment added successfully' locals = { note: new_note, ontology_acronym: ontology_acronym, parent_type: parent_type } partial = 'notes/note_line' - container_id = "#{parent_type}_notes_table_content" + container_id = "#{parent_type}_notes_table_body" alerts_container_id = nil end diff --git a/app/controllers/ontologies_controller.rb b/app/controllers/ontologies_controller.rb index 7b4a2ef9b7..9cf4160115 100644 --- a/app/controllers/ontologies_controller.rb +++ b/app/controllers/ontologies_controller.rb @@ -385,8 +385,12 @@ def widgets render partial: 'ontologies/sections/widgets', layout: 'ontology_viewer' end end - - + def ajax_ontologies + + + render json: LinkedData::Client::Models::Ontology.all(include_views: true, + display: 'acronym,name', display_links: false, display_context: false) + end private def ontology_params diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 557f2ef0cb..6863fc2647 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -7,6 +7,20 @@ module ApplicationHelper + include ModalHelper + + RESOLVE_NAMESPACE = {:omv => "http://omv.ontoware.org/2005/05/ontology#", :skos => "http://www.w3.org/2004/02/skos/core#", :owl => "http://www.w3.org/2002/07/owl#", + :rdf => "http://www.w3.org/1999/02/22-rdf-syntax-ns#", :rdfs => "http://www.w3.org/2000/01/rdf-schema#", :metadata => "http://data.bioontology.org/metadata/", + :metadata_def => "http://data.bioontology.org/metadata/def/", :dc => "http://purl.org/dc/elements/1.1/", :xsd => "http://www.w3.org/2001/XMLSchema#", + :oboinowl_gen => "http://www.geneontology.org/formats/oboInOwl#", :obo_purl => "http://purl.obolibrary.org/obo/", + :umls => "http://bioportal.bioontology.org/ontologies/umls/", :door => "http://kannel.open.ac.uk/ontology#", :dct => "http://purl.org/dc/terms/", + :void => "http://rdfs.org/ns/void#", :foaf => "http://xmlns.com/foaf/0.1/", :vann => "http://purl.org/vocab/vann/", :adms => "http://www.w3.org/ns/adms#", + :voaf => "http://purl.org/vocommons/voaf#", :dcat => "http://www.w3.org/ns/dcat#", :mod => "http://www.isibang.ac.in/ns/mod#", :prov => "http://www.w3.org/ns/prov#", + :cc => "http://creativecommons.org/ns#", :schema => "http://schema.org/", :doap => "http://usefulinc.com/ns/doap#", :bibo => "http://purl.org/ontology/bibo/", + :wdrs => "http://www.w3.org/2007/05/powder-s#", :cito => "http://purl.org/spar/cito/", :pav => "http://purl.org/pav/", :nkos => "http://w3id.org/nkos/nkostype#", + :oboInOwl => "http://www.geneontology.org/formats/oboInOwl#", :idot => "http://identifiers.org/idot/", :sd => "http://www.w3.org/ns/sparql-service-description#", + :cclicense => "http://creativecommons.org/licenses/"} + def get_apikey unless session[:user].nil? return session[:user].apikey @@ -449,14 +463,14 @@ def xmldatetime_to_date(xml_date_time_str) #return DateTime.xmlschema( xml_date_time_str ).to_date.to_s end - def flash_class(level) + def notification_type(flash_key) bootstrap_alert_class = { - 'notice' => 'alert-info', - 'success' => 'alert-success', - 'error' => 'alert-danger', - 'alert' => 'alert-danger' + 'notice' => 'success', + 'success' => 'success', + 'error' => 'error', + 'alert' => 'alert' } - bootstrap_alert_class[level] + bootstrap_alert_class[flash_key] end ###BEGIN ruby equivalent of JS code in bp_ajax_controller. @@ -558,36 +572,7 @@ def ontology_viewer_page_name(ontology_name, concept_name_title , page) ontology_name + " | " +concept_name_title + " - #{page.capitalize}" end - def link_to_modal(name, options = nil, html_options = nil, &block) - new_data = { - controller: 'show-modal', turbo: true, - turbo_frame: 'application_modal_content', - action: 'click->show-modal#show' - } - - html_options[:data].merge!(new_data) do |_, old, new| - "#{old} #{new}" - end - if name.nil? - link_to(options, html_options, &block) - else - link_to(name, options, html_options) - end - end - def submit_to_modal(name, html_options = nil, &block) - new_data = { - controller: 'show-modal', turbo: true, - turbo_frame: 'application_modal_content', - action: 'click->show-modal#show' - } - - html_options[:data].merge!(new_data) do |_, old, new| - "#{old} #{new}" - end - - submit_tag(name || "save", html_options) - end def uri?(url) url =~ /\A#{URI::DEFAULT_PARSER.make_regexp(%w[http https])}\z/ @@ -609,4 +594,50 @@ def skos? submission = @submission || @submission_latest submission&.hasOntologyLanguage === 'SKOS' end + + def current_page?(path) + request.path.eql?(path) + end + + def request_lang + lang = params[:language] || params[:lang] + lang = 'EN' unless lang + lang.upcase + end + + def bp_config_json + # For config settings, see + # config/bioportal_config.rb + # config/initializers/ontologies_api_client.rb + config = { + org: $ORG, + org_url: $ORG_URL, + site: $SITE, + org_site: $ORG_SITE, + ui_url: $UI_URL, + apikey: LinkedData::Client.settings.apikey, + userapikey: get_apikey, + rest_url: LinkedData::Client.settings.rest_url, + proxy_url: $PROXY_URL, + biomixer_url: $BIOMIXER_URL, + annotator_url: $ANNOTATOR_URL, + ncbo_annotator_url: $NCBO_ANNOTATOR_URL, + ncbo_apikey: $NCBO_API_KEY, + interportal_hash: $INTERPORTAL_HASH, + resolve_namespace: RESOLVE_NAMESPACE + } + config[:ncbo_slice] = @subdomain_filter[:acronym] if (@subdomain_filter[:active] && !@subdomain_filter[:acronym].empty?) + config.to_json + end + + + def portal_name + $SITE + end + + def navitems + items = [["/ontologies", "Browse"],["/mappings", "Mappings"],["/recommender", "Recommender"],["/annotator", "Annotator"], ["/landscape", "Landscape"]] + end + + end diff --git a/app/helpers/components_helper.rb b/app/helpers/components_helper.rb new file mode 100644 index 0000000000..3b931cb315 --- /dev/null +++ b/app/helpers/components_helper.rb @@ -0,0 +1,80 @@ +module ComponentsHelper + def info_tooltip(text) + render Display::InfoTooltipComponent.new(text: text) + end + + def empty_state_message(message) + content_tag(:p, message.html_safe, class: 'font-italic field-description_text') + end + + def properties_list_component(c, properties, &block) + properties.each do |k, v| + c.row do + content = if block_given? + capture(v, &block) + else + v + end + render FieldContainerComponent.new(label: attr_label(k)) do + content + end + end + end + + end + + + def horizontal_list_container(values, &block) + return if Array(values).empty? + + render Layout::HorizontalListComponent.new do |l| + Array(values).each do |v| + l.element do + capture(v, &block) + end + end + end + end + + def list_container(values, &block) + return if Array(values).empty? + + render Layout::ListComponent.new do |l| + Array(values).each do |v| + l.row do + capture(v, &block) + end + end + end + end + + def properties_card(title, tooltip, properties, &block) + render Layout::CardComponent.new do |d| + d.header(text: title, tooltip: tooltip) + render(Layout::ListComponent.new) do |c| + if properties + properties_list_component(c, properties, &block) + else + capture(c, &block) + end + end + end + end + + def properties_dropdown(id, title, tooltip, properties, &block) + render DropdownContainerComponent.new(title: title, id: id, tooltip: tooltip) do |d| + d.empty_state do + properties_string = properties.keys[0..4].map{|key| "#{attr_label(key)}" }.join(', ')+'... ' if properties + empty_state_message "The fields #{properties_string} are empty" + end + + render Layout::ListComponent.new do |c| + if properties + properties_list_component(c, properties, &block) + else + capture(c, &block) + end + end + end + end +end diff --git a/app/helpers/modal_helper.rb b/app/helpers/modal_helper.rb new file mode 100644 index 0000000000..568c0f866f --- /dev/null +++ b/app/helpers/modal_helper.rb @@ -0,0 +1,42 @@ +module ModalHelper + + def link_to_modal(name, options = nil, html_options = nil, &block) + html_options = modal_controller_data(html_options) + if name.nil? + link_to(options, html_options, &block) + else + link_to(PopupLinkTextComponent.new(text: name).call, options, html_options) + end + end + + def submit_to_modal(name, html_options = nil) + html_options = modal_controller_data(html_options) + + submit_tag(name || 'save', html_options) + end + + def modal_frame_container(id = 'application_modal') + render TurboModalComponent.new(id: id) + end + + def render_in_modal(id = 'application_modal', &block) + render TurboFrameComponent.new(id: "#{id}_content") do + block.call.html_safe if block_given? + end + end + + private + + def modal_controller_data(html_options) + new_data = { + controller: 'show-modal', turbo: true, + turbo_frame: 'application_modal_content', + action: 'click->show-modal#show' + } + + html_options[:data].merge!(new_data) do |_, old, new| + "#{old} #{new}" + end + html_options + end +end diff --git a/app/helpers/submissions_helper.rb b/app/helpers/submissions_helper.rb index a9dc3d8b99..bf2a48bb43 100644 --- a/app/helpers/submissions_helper.rb +++ b/app/helpers/submissions_helper.rb @@ -49,11 +49,11 @@ def metadata_section(id, label, collapsed: true, parent_id: nil, &block) def attribute_container(attr, required: false, &block) if show_attribute?(attr, required) - content_tag(:div) do - capture(&block) - end + content_tag(:div) do + capture(&block) end end + end def inline_save? !@inline_save.nil? && @inline_save @@ -355,6 +355,11 @@ def generate_list_field_input(attr, name, values, field_func) c.template do method(field_func).call("#{name}[NEW_RECORD]", '', :id => attr["attribute"].to_s + "_" + @ontology.acronym, class: "metadataInput form-control my-1") end + + c.empty_state do + hidden_field_tag "#{name}[#{values.size}]" + end + values.each_with_index do |metadata_val, i| c.row do method(field_func).call("#{name}[#{i}]", metadata_val, :id => "submission_#{attr["attribute"].to_s}" + "_" + @ontology.acronym, class: "metadataInput my-1 form-control") diff --git a/app/javascript/application_esbuild.js b/app/javascript/application_esbuild.js index a939c36c99..2ded13b5ac 100644 --- a/app/javascript/application_esbuild.js +++ b/app/javascript/application_esbuild.js @@ -1,12 +1,11 @@ // Entry point for the build script in your package.json -import { Turbo } from "@hotwired/turbo-rails" -Turbo.session.drive = false -import "./controllers" -import "./component_controllers" - +import { Turbo } from "@hotwired/turbo-rails"; +import "./controllers"; +import "./component_controllers"; +Turbo.session.drive = false; Turbo.setConfirmMethod((message) => { return new Promise((resolve, reject) => { alertify.confirm(message, (e) => { diff --git a/app/javascript/component_controllers/index.js b/app/javascript/component_controllers/index.js index dc1edde165..5eff9ec43d 100644 --- a/app/javascript/component_controllers/index.js +++ b/app/javascript/component_controllers/index.js @@ -2,17 +2,31 @@ import {application} from "../controllers/application"; import TurboModalController from "../../components/turbo_modal_component/turbo_modal_component_controller" import FileInputLoaderController - from "../../components/file_input_loader_component/file_input_loader_component_controller"; + from "../../components/input/file_input_component/file_input_loader_component_controller"; import Select_input_component_controller from "../../components/select_input_component/select_input_component_controller"; -import Metadata_selector_component_controller - from "../../components/metadata_selector_component/metadata_selector_component_controller"; import Ontology_subscribe_button_component_controller from "../../components/ontology_subscribe_button_component/ontology_subscribe_button_component_controller"; +import Search_input_component_controller + from "../../components/search_input_component/search_input_component_controller"; +import CircleProgressBarComponentController from "../../components/circle_progress_bar_component/circle_progress_bar_component_controller" +import Tabs_container_component_controller + from "../../components/tabs_container_component/tabs_container_component_controller"; + +import alert_component_controller from "../../components/display/alert_component/alert_component_controller"; +import Progress_pages_component_controller + from "../../components/layout/progress_pages_component/progress_pages_component_controller"; +import Reveal_component_controller from "../../components/layout/reveal_component/reveal_component_controller"; + application.register("turbo-modal", TurboModalController) application.register("file-input", FileInputLoaderController) application.register("select-input", Select_input_component_controller) -application.register("metadata-select", Metadata_selector_component_controller) application.register("subscribe-notes", Ontology_subscribe_button_component_controller) +application.register("search-input", Search_input_component_controller) +application.register("tabs-container", Tabs_container_component_controller) +application.register("circle-progress-bar", CircleProgressBarComponentController) +application.register("alert-component", alert_component_controller) +application.register("progress-pages", Progress_pages_component_controller) +application.register("reveal-component", Reveal_component_controller) diff --git a/app/javascript/controllers/application.js b/app/javascript/controllers/application.js index 258ab85b4c..90a3788a2e 100644 --- a/app/javascript/controllers/application.js +++ b/app/javascript/controllers/application.js @@ -12,7 +12,11 @@ import Flatpickr from "stimulus-flatpickr" application.register("flatpickr", Flatpickr); import NestedForm from 'stimulus-rails-nested-form' application.register('nested-form', NestedForm) - +import ReadMore from 'stimulus-read-more' +application.register('read-more', ReadMore) +import Timeago from 'stimulus-timeago' +application.register('timeago', Timeago) export { application } - +import Reveal from 'stimulus-reveal-controller' +application.register('reveal', Reveal) diff --git a/app/javascript/controllers/chosen_controller.js b/app/javascript/controllers/chosen_controller.js index 38d1a092d4..2115f93e45 100644 --- a/app/javascript/controllers/chosen_controller.js +++ b/app/javascript/controllers/chosen_controller.js @@ -3,6 +3,7 @@ import {useChosen} from "../mixins/useChosen"; // Connects to data-controller="chosen" export default class extends Controller { + // TODO to update to use TomSelect static values = { name: String, enableColors: {type: Boolean, default: false} @@ -61,9 +62,6 @@ export default class extends Controller { chosenClose.style.position = "unset" chosenClose.style.margin = "auto" - - - } }) } diff --git a/app/javascript/controllers/form_display_controller.js b/app/javascript/controllers/form_display_controller.js new file mode 100644 index 0000000000..4649523fc7 --- /dev/null +++ b/app/javascript/controllers/form_display_controller.js @@ -0,0 +1,36 @@ +import { Controller } from "@hotwired/stimulus" + +// Connects to data-controller="form-options-display" +export default class extends Controller { + + static targets = ['option1', 'option2'] + static values = { + hiddenClass: String + } + + connect() { + this.class = this.hasHiddenClassValue ? this.hiddenClassValue : "hidden" + } + + showOption1(){ + this.#hide(this.option2Targets) + this.#show(this.option1Targets) + } + + showOption2(){ + this.#hide(this.option1Targets) + this.#show(this.option2Targets) + } + + + #show(optionElems){ + optionElems.forEach(x => x.classList.remove(this.class)) + + } + + #hide(optionElems){ + optionElems.forEach(x => x.classList.add(this.class)) + } + + +} diff --git a/app/javascript/controllers/history_controller.js b/app/javascript/controllers/history_controller.js index d339c32f82..48518c64ac 100644 --- a/app/javascript/controllers/history_controller.js +++ b/app/javascript/controllers/history_controller.js @@ -1,5 +1,5 @@ -import {Controller} from "@hotwired/stimulus" -import {HistoryService} from "../mixins/useHistory"; +import { Controller } from "@hotwired/stimulus" +import { HistoryService } from "../mixins/useHistory"; // Connects to data-controller="history" export default class extends Controller { @@ -7,9 +7,9 @@ export default class extends Controller { this.history = new HistoryService() } updateURL(event) { - const newData = event.detail.data - if (newData !== undefined) { - this.history.updateHistory(document.location.pathname + document.location.search, newData) + const { data } = event.detail + if (data !== undefined && Object.keys(data).length > 0) { + this.history.updateHistory(document.location.pathname + document.location.search, data) } } diff --git a/app/javascript/controllers/index.js b/app/javascript/controllers/index.js index 00e656994c..a63383b8d7 100644 --- a/app/javascript/controllers/index.js +++ b/app/javascript/controllers/index.js @@ -28,6 +28,9 @@ application.register("fair-score-summary", FairScoreSummaryController) import FormAutoCompleteController from "./form_auto_complete_controller" application.register("form-auto-complete", FormAutoCompleteController) +import FormDisplayController from "./form_display_controller" +application.register("form-options-display", FormDisplayController) + import HistoryController from "./history_controller" application.register("history", HistoryController) @@ -37,17 +40,30 @@ application.register("label-ajax", LabelAjaxController) import LabelsAjaxContainerController from "./labels_ajax_container_controller" application.register("labels-ajax-container", LabelsAjaxContainerController) +import LanguageChangeController from "./language_change_controller" +application.register("language-change", LanguageChangeController) + import LoadChartController from "./load_chart_controller" application.register("load-chart", LoadChartController) import MetadataDownloaderController from "./metadata_downloader_controller" application.register("metadata-downloader", MetadataDownloaderController) +import OntologyRelationsNetworkController from "./ontology_relations_network_controller" +application.register("ontology-relations-network", OntologyRelationsNetworkController) + +import OntologyViewerTabsController from "./ontology_viewer_tabs_controller" +application.register("ontology-viewer-tabs", OntologyViewerTabsController) + import OntoportalAutocompleteController from "./ontoportal_autocomplete_controller" application.register("ontoportal-autocomplete", OntoportalAutocompleteController) +import PlatformLanguageController from "./platform_language_controller" +application.register("platform-language", PlatformLanguageController) + import ShowFilterCountController from "./show_filter_count_controller" application.register("show-filter-count", ShowFilterCountController) + import ShowModalController from "./show_modal_controller" application.register("show-modal", ShowModalController) @@ -57,9 +73,15 @@ application.register("simple-tree", SimpleTreeController) import SkosCollectionColorsController from "./skos_collection_colors_controller" application.register("skos-collection-colors", SkosCollectionColorsController) +import TextTruncateController from "./text_truncate_controller" +application.register("text-truncate", TextTruncateController) + import TooltipController from "./tooltip_controller" application.register("tooltip", TooltipController) +import TopnavResponsivenessController from "./topnav_responsiveness_controller" +application.register("topnav-responsiveness", TopnavResponsivenessController) + import TurboFrameController from "./turbo_frame_controller" application.register("turbo-frame", TurboFrameController) diff --git a/app/javascript/controllers/language_change_controller.js b/app/javascript/controllers/language_change_controller.js new file mode 100644 index 0000000000..3a78bfcb29 --- /dev/null +++ b/app/javascript/controllers/language_change_controller.js @@ -0,0 +1,18 @@ +import { Controller } from "@hotwired/stimulus" + +// Connects to data-controller="language-change" +export default class extends Controller { + + dispatchLangChangeEvent() { + this.element.dispatchEvent(new CustomEvent('lang_changed', { + bubbles: true, + cancelable: true, + detail: { + data: { + language: [this.element.value] + } + } + })); + + } +} diff --git a/app/javascript/controllers/metadata_downloader_controller.js b/app/javascript/controllers/metadata_downloader_controller.js index e5544f1a3c..b4639ee93f 100644 --- a/app/javascript/controllers/metadata_downloader_controller.js +++ b/app/javascript/controllers/metadata_downloader_controller.js @@ -57,7 +57,7 @@ export default class extends Controller { if (subJson["hasDomain"] == null) { subJson["hasDomain"] = ontJson["hasDomain"]; } else { - subJson["hasDomain"] = subJson["hasDomain"].split(", ").concat(ontJson["hasDomain"]); + subJson["hasDomain"] = subJson["hasDomain"].join(', ').split(", ").concat(ontJson["hasDomain"]); /* make the array unique: var unique = arr.filter(function(elem, index, self) { return index == self.indexOf(elem); diff --git a/app/javascript/controllers/ontology_relations_network_controller.js b/app/javascript/controllers/ontology_relations_network_controller.js new file mode 100644 index 0000000000..7043a83843 --- /dev/null +++ b/app/javascript/controllers/ontology_relations_network_controller.js @@ -0,0 +1,169 @@ +import {Controller} from "@hotwired/stimulus" +import { Network, DataSet } from 'vis-network/standalone/esm/vis-network.min.js'; + +// Connects to data-controller="ontology-relations-network" +export default class extends Controller { + static values = { + data: Array + } + + static targets = ["container"] + + connect() { + this.build() + } + + + build(){ + this.#buildNetwork(this.dataValue); + } + /** + * Build the VIS network for ontologies relations: http://visjs.org/docs/network/ + * @param ontologyRelationsArray + */ + #buildNetwork(ontologyRelationsArray) { + const nodes = new DataSet([]) + // create an array with edges + const edges = new DataSet(); + + let propertyCount = 1; // To define nodes IDs + + // Hash with nodes id for each ontology URI + let nodeIds = {}; + + /* Get the relations that have been selected + if (jQuery("#selected_relations").val() !== null) { + selected_relations = jQuery("#selected_relations").val() + }*/ + + let selected_relations = []; + this.relationCheckTargets = Array.from(this.element.querySelectorAll('option')) + this.relationCheckTargets.forEach((elem) => { + if (elem.selected) { + selected_relations.push(elem.value); + } + }) + + ontologyRelationsArray.forEach((relation) => { + let targetNodeNumber + let sourceNodeNumber + + // If relations have been selected for filtering then we don't show others relations + if (!selected_relations.includes(relation["relation"])) { + return + } + + // Don't create a new node if node exist already, just add a new edge + if ( nodeIds[relation["source"]] != null) { + sourceNodeNumber = nodeIds[relation["source"]]; + } else { + sourceNodeNumber = propertyCount; + // If the node is the source it means it is from the Portal, so we colorate it in green + nodes.add([ + {id: sourceNodeNumber, label: relation["source"], color: "#5cb85c"} + ]); + nodeIds[relation["source"]] = propertyCount; + propertyCount++; + } + + // Create the target node if don't exist + if (nodeIds[relation["target"]] != null) { + targetNodeNumber = nodeIds[relation["target"]]; + } else { + targetNodeNumber = propertyCount; + // If target node is an ontology from the portal then node in green + if (relation["targetInPortal"]) { + nodes.add([ + {id: targetNodeNumber, label: relation["target"], color: "#5cb85c"} + ]); + } else { + nodes.add([ + {id: targetNodeNumber, label: relation["target"]} + ]); + } + nodeIds[relation["target"]] = propertyCount; + propertyCount++; + } + + edges.add([ + { + from: sourceNodeNumber, + to: targetNodeNumber, + label: relation["relation"], + font: {align: 'horizontal'} + } + ]); + }) + + + + // create a network + const container = this.containerTarget; + // provide the data in the vis format + + const data = { + nodes: nodes, + edges: edges + }; + + // Get height of div + const networkHeight = container.clientHeight.toString(); + + const options = { + autoResize: true, + height: networkHeight, + groups: { + useDefaultGroups: true, + myGroupId: { + /*node options*/ + } + }, + edges: { + color: {inherit: 'both'}, + smooth: { + enabled: true, + type: "dynamic", + roundness: 0.5 + } + }, + nodes: { + shape: "box" + }, + physics: { + // http://visjs.org/docs/network/physics.html + enabled: true, + // To stabilize faster, increase the minVelocity value + minVelocity: 1, + stabilization: { + enabled: true, + onlyDynamicEdges: false, + fit: true + }, + barnesHut: { + gravitationalConstant: -1500, + centralGravity: 0, + springLength: 300, + springConstant: 0.01, + damping: 0.2, + avoidOverlap: 0.2 + }, + hierarchicalRepulsion: { // not used at the moment + centralGravity: 0.0, + springLength: 500, + springConstant: 0.2, + damping: 1, + nodeDistance: 170 + }, + solver: 'barnesHut' + }, + interaction: { + zoomView: false, + navigationButtons: true + } + }; + + // initialize your network! + const network = new Network(container, data, options); + network.fit(); + } +} diff --git a/app/javascript/controllers/ontology_viewer_tabs_controller.js b/app/javascript/controllers/ontology_viewer_tabs_controller.js new file mode 100644 index 0000000000..b5c7398247 --- /dev/null +++ b/app/javascript/controllers/ontology_viewer_tabs_controller.js @@ -0,0 +1,47 @@ +import { Controller } from "@hotwired/stimulus" +import {HistoryService} from "../mixins/useHistory"; + + +export default class extends Controller { + + + static targets = ["languageSelector"] + static values = { + languageSections: Array + } + + connect() { + this.changeEvent = this.languageSelectorTarget.addEventListener("change", (e) => { + this.languageSectionsValue.forEach(p => { + let elem = document.getElementById("language_selector_hidden_"+p) + if(elem){ + elem.value = e.target.value + elem.dispatchEvent(new Event('change')) + } + }) + }) + } + + destroy(){ + this.changeEvent.removeEventListener() + } + + updateLanguageSelector(event) { + if(event.target.id === "ontology_viewer"){ + let page = event.detail.data.selectedTab + this.#disableLanguageSelector(page) + } + } + + #disableLanguageSelector(selectedSection){ + if (this.languageSectionsValue.includes(selectedSection)){ + this.languageSelectorTarget.removeAttribute("disabled") + this.languageSelectorTarget.style.visibility = 'visible' + } else{ + this.languageSelectorTarget.setAttribute("disabled", true) + this.languageSelectorTarget.style.visibility = 'hidden' + } + } + + +} diff --git a/app/javascript/controllers/platform_language_controller.js b/app/javascript/controllers/platform_language_controller.js new file mode 100644 index 0000000000..682d8e9017 --- /dev/null +++ b/app/javascript/controllers/platform_language_controller.js @@ -0,0 +1,21 @@ +import { Controller } from "@hotwired/stimulus" +import { Turbo } from "@hotwired/turbo-rails"; +import { getCookie } from "../mixins/cookie"; + +// Connects to data-controller="platform-language" +// this controller is used to change the language of the whole platform +export default class extends Controller { + + connect() { + const locale = getCookie('locale'); + + const option = document.querySelector(`#language-select option[value="${locale}"]`); + option && (option.selected = true); + + } + + handleLangChanged(event) { + const userPreferedLanguage = event.target.value; + Turbo.visit(`/locale/${userPreferedLanguage}`, { action: "replace" }); + } +} diff --git a/app/javascript/controllers/show_modal_controller.js b/app/javascript/controllers/show_modal_controller.js index d2eb0a24ea..f539869d82 100644 --- a/app/javascript/controllers/show_modal_controller.js +++ b/app/javascript/controllers/show_modal_controller.js @@ -14,7 +14,6 @@ export default class extends Controller { this.modal = new UseModal() this.boundHide = this.hide.bind(this) this.modal.onClose(this.element, this.boundHide) - this.setSize() } disconnect() { @@ -23,6 +22,7 @@ export default class extends Controller { show() { this.setTitle() + this.setSize() let target = this.targetModalElement if (target) { this.modal.showModal(target) diff --git a/app/javascript/controllers/text_truncate_controller.js b/app/javascript/controllers/text_truncate_controller.js new file mode 100644 index 0000000000..b3c235e835 --- /dev/null +++ b/app/javascript/controllers/text_truncate_controller.js @@ -0,0 +1,21 @@ +import ReadMore from "stimulus-read-more"; + +// Connects to data-controller="text-truncate" +export default class extends ReadMore { + static targets = ['button'] + + connect() { + super.connect() + if (!this.#isTextClamped()) { + this.#hideButton() + } + } + + #isTextClamped() { + return this.contentTarget.scrollHeight > this.contentTarget.clientHeight + } + + #hideButton() { + this.buttonTarget.style.display = 'none' + } +} diff --git a/app/javascript/controllers/tooltip_controller.js b/app/javascript/controllers/tooltip_controller.js index 13f0bb9f55..60fd3d7e9e 100644 --- a/app/javascript/controllers/tooltip_controller.js +++ b/app/javascript/controllers/tooltip_controller.js @@ -1,14 +1,19 @@ -import { Controller } from "@hotwired/stimulus" +import {Controller} from "@hotwired/stimulus" import useTooltip from "../mixins/useTooltip"; // Connects to data-controller="tooltip" export default class extends Controller { - static values = { - interactive: {type: Boolean, default: false} - } - connect() { - if(this.element.title && this.element.title !== ''){ - useTooltip(this.element, {interactive: this.interactiveValue}) + + static values = { + position: {type: String, default: 'top'}, + interactive: {type: Boolean, default: false} } - } + + connect() { + if (this.element.title && this.element.title !== '') { + useTooltip(this.element, {interactive: this.interactiveValue, placement: this.positionValue}) + } + + } + } diff --git a/app/javascript/controllers/topnav_responsiveness_controller.js b/app/javascript/controllers/topnav_responsiveness_controller.js new file mode 100644 index 0000000000..218919ff8c --- /dev/null +++ b/app/javascript/controllers/topnav_responsiveness_controller.js @@ -0,0 +1,22 @@ +import { Controller } from "@hotwired/stimulus" + +// Connects to data-controller="topnav-responsiveness" +export default class extends Controller { + static targets = ['navMenu'] + + connect() { + let checkbox = this.navMenuTarget + let divs = document.querySelectorAll('.top-nav, .top-nav-ul, .nav-items, .nav-ul-li, .nav-input, .nav-a, .nav-language, .supportMenuDropdownLink'); + checkbox.addEventListener('change', function() { + if (this.checked) { + divs.forEach(function(div) { + div.classList.add('show-responsive'); + }); + } else { + divs.forEach(function(div) { + div.classList.remove('show-responsive'); + }); + } + }); + } +} diff --git a/app/javascript/controllers/turbo_frame_controller.js b/app/javascript/controllers/turbo_frame_controller.js index 821bb4fc58..41c67dd5d9 100644 --- a/app/javascript/controllers/turbo_frame_controller.js +++ b/app/javascript/controllers/turbo_frame_controller.js @@ -1,11 +1,11 @@ -import {Controller} from "@hotwired/stimulus" -import {HistoryService} from "../mixins/useHistory"; +import { Controller } from "@hotwired/stimulus" +import { HistoryService } from "../mixins/useHistory"; // Connects to data-controller="turbo-frame" export default class extends Controller { static values = { url: String, - placeHolder: {type: String, default: 'Nothing loaded'}, + placeHolder: { type: String, default: 'Nothing loaded' }, } static targets = ['frame'] @@ -14,13 +14,17 @@ export default class extends Controller { } updateFrame(event) { - const newData = event.detail.data - const values = Object.entries(newData)[0][1] - if (values.filter(x => x.length !== 0).length === 0) { + const { data } = event.detail + const values = Object.values(data) + + // remove null and empty values + values.filter((value) => value !== "" || value !== undefined) + + if (values.length === 0) { this.frame.innerHTML = this.placeHolderValue } else { this.frame.innerHTML = "" - this.urlValue = new HistoryService().getUpdatedURL(this.urlValue, newData); + this.urlValue = new HistoryService().getUpdatedURL(this.urlValue, data) this.frame.src = this.urlValue } } diff --git a/app/javascript/controllers/turbo_frame_error_controller.js b/app/javascript/controllers/turbo_frame_error_controller.js index b19c63c129..782166bc54 100644 --- a/app/javascript/controllers/turbo_frame_error_controller.js +++ b/app/javascript/controllers/turbo_frame_error_controller.js @@ -34,18 +34,13 @@ export default class extends Turbo_frame_controller { Array.from(styles).forEach(e => el.removeChild(e)) let body = el.querySelector('h1') - let div = document.createElement('div') - div.className ="text-center" - div.innerHTML = (body ? body.innerText : el.innerHTML) - this.errorMessageTarget.firstElementChild.appendChild(div) + this.errorMessageTarget.firstElementChild.querySelector('.alert-message').innerHTML = (body ? body.innerText : el.innerHTML) $(this.errorMessageTarget).show() } #hideError(){ - let child =this.errorMessageTarget.firstElementChild let count = this.errorMessageTarget.firstElementChild.childElementCount - if(count === 2) { - child.removeChild(child.lastElementChild) + if(count !== 0) { $(this.errorMessageTarget).hide() } } diff --git a/app/javascript/mixins/cookie.js b/app/javascript/mixins/cookie.js new file mode 100644 index 0000000000..5e2b5bf0d1 --- /dev/null +++ b/app/javascript/mixins/cookie.js @@ -0,0 +1,8 @@ +export const getCookie = (name) => { + const cookieValue = document.cookie.match('(^|[^;]+)\\s*' + name + '\\s*=\\s*([^;]+)'); + return cookieValue ? cookieValue.pop() : ''; +} + +export const setCookie = (name, value, days) => { + document.cookie = `${name}=${value};max-age=${days * 24 * 60 * 60}`; +} \ No newline at end of file diff --git a/app/javascript/mixins/useFairScore.js b/app/javascript/mixins/useFairScore.js index 82aa516648..02b12f95b1 100644 --- a/app/javascript/mixins/useFairScore.js +++ b/app/javascript/mixins/useFairScore.js @@ -253,7 +253,7 @@ class FairScorePrincipleBar extends FairScoreChart{ pointBackgroundColor: 'rgba(251, 192, 45, 1)' }, { - label: 'N/A score', + label: 'Not yet supported', data: na, fill: true, backgroundColor: 'rgba(176, 190, 197, 0.2)', @@ -597,7 +597,7 @@ class FairScoreCriteriaBar extends FairScoreChart{ pointBackgroundColor: 'rgba(251, 192, 45, 1)', }, { - label: 'N/A score', + label: 'Not yet supported', data: na, fill: true, backgroundColor: 'rgba(176, 190, 197, 0.2)', diff --git a/app/javascript/mixins/useHistory.js b/app/javascript/mixins/useHistory.js index 24a59cbec7..f84ff41332 100644 --- a/app/javascript/mixins/useHistory.js +++ b/app/javascript/mixins/useHistory.js @@ -1,5 +1,8 @@ export class HistoryService { + unWantedData = ['turbo', 'controller', 'target', 'value'] + + constructor() { this.history = History } @@ -12,57 +15,52 @@ export class HistoryService { return this.history.getState() } - updateHistory(currentUrl, newData) { - const state = this.#initStateFromUrl(currentUrl) - const newUrl = this.getUpdatedURL(currentUrl, newData, state) - this.pushState(state, state.title, newUrl) + const newUrl = this.getUpdatedURL(currentUrl, newData) + const newState = this.#initStateFromUrl(newUrl) + this.pushState(newState, newState.title, newUrl) } getUpdatedURL(currentUrl, newData) { - const url = new URL(currentUrl, document.location.origin) - const urlParams = url.searchParams - this.#updateURLFromState(urlParams, this.getState()) + const base = document.location.origin + const url = new URL(currentUrl, base) + this.#updateURLFromState(url.searchParams, this.getState().data) + this.#addNewDataToUrl(url, newData) + return url.pathname + url.search + } - this.#filterUnwantedData(newData).forEach(([updatedParam, newValue]) => { - newValue = Array.isArray(newValue) ? newValue : [newValue] - if (newValue !== null && Array.from(newValue).length > 0) { - urlParams.set(updatedParam, newValue.join(',')) - } - }) + #addNewDataToUrl(url, newData) { + const wantedData = this.#filterUnwantedData(newData, this.unWantedData); - return url.pathname + url.search + wantedData.forEach(([updatedParam, newValue]) => { + if (newValue === null) { + url.searchParams.delete(updatedParam) + } else { + newValue = Array.isArray(newValue) ? newValue : [newValue] + url.searchParams.set(updatedParam, newValue.join(',')) + } + }); } - #filterUnwantedData(newData){ - const unWantedData = ['turbo', 'controller', 'target', 'value'] - return Object.entries(newData).filter(([key]) => unWantedData.filter(x => key.toLowerCase().includes(x)).length === 0) + #filterUnwantedData(data, unWantedData) { + return Object.entries(data).filter(([key]) => !unWantedData.some(uw => key.toLowerCase().includes(uw.toLowerCase()))) } - #initStateFromUrl(currentUrl) { + #initStateFromUrl(currentUrl) { const url = new URL(currentUrl, document.location.origin) const urlParams = url.searchParams - const oldState = this.getState().data - let newState = oldState - let oldValue = null + let newState = this.getState().data urlParams.forEach((newVal, key) => { - oldValue = oldState[key] - if (oldValue === undefined) { - newState[key] = newVal - } + newState[key] = newVal }) return newState } #updateURLFromState(urlParams, state) { - let oldValue = null - urlParams.forEach((newVal, key) => { - oldValue = state[key] - if (oldValue !== undefined && oldValue !== newVal) { - urlParams.set(key, newVal) - } else if (oldValue !== undefined) { - state[key] = newVal + Object.entries(state).forEach(([key, val]) => { + if (key !== 'p'){ + urlParams.set(key, val) } }) } diff --git a/app/javascript/mixins/useTomSelect.js b/app/javascript/mixins/useTomSelect.js new file mode 100644 index 0000000000..7b4923d020 --- /dev/null +++ b/app/javascript/mixins/useTomSelect.js @@ -0,0 +1,9 @@ +import TomSelect from "tom-select" + +export function useTomSelect(element, params, onChange = null) { + const tom = new TomSelect(element,params) + if(onChange){ + tom.on('change',onChange) + } + return tom; +} \ No newline at end of file diff --git a/app/javascript/mixins/useTooltip.js b/app/javascript/mixins/useTooltip.js index 2d2b8bd6c2..8059780002 100644 --- a/app/javascript/mixins/useTooltip.js +++ b/app/javascript/mixins/useTooltip.js @@ -8,7 +8,6 @@ export default function useTooltip(elem, params) { animation: 'fade', content: content, allowHTML: true, - placement: 'top', maxWidth: '400', ...params }) } \ No newline at end of file diff --git a/app/views/admin/index.html.haml b/app/views/admin/index.html.haml index a67c026743..d8527a23f1 100644 --- a/app/views/admin/index.html.haml +++ b/app/views/admin/index.html.haml @@ -42,33 +42,27 @@ = link_to("Reset UI cache connection", "#", id: "reset_memcache_connection_action", class: "btn btn-outline-secondary btn-sm admin-action-item", role: "button") = link_to("Flush GOO cache", "#", id: "flush_goo_cache_action", class: "btn btn-outline-secondary btn-sm admin-action-item", role: "button") = link_to("Flush HTTP cache", "#", id: "flush_http_cache_action", class: "btn btn-outline-secondary btn-sm", role: "button") - - -# Check for updates + %div#site-admin-update-check.mb-5 %div.site-admin-page-header VERSION MANAGEMENT %dive.site-admin-page-section = link_to("Check for updates", "#", id: "update_check_action", class: "btn btn-outline-secondary btn-sm", role: "button") - -# View appliance ID %div#site-admin-appliance-id.mb-5 %div.site-admin-page-header APPLIANCE ID %dive.site-admin-page-section %div#appliance-id %span - - -# Clear caches + %div#site-admin-clear-caches.my-5 %div.site-admin-page-header MONITORING LINKS %dive.site-admin-page-section = link_to("Newrelic", "https://login.newrelic.com/login", target: '_blank', id: "newrelic_link", class: "btn btn-outline-secondary btn-sm admin-action-item", role: "button") = link_to("StatusCake", "https://app.statuscake.com/Login", target: '_blank', id: "statuscake_link", class: "btn btn-outline-secondary btn-sm admin-action-item", role: "button") - - - -# Ontology Administration tab - %div.tab-pane.fade{id: "ontology-admin", role: "tabpanel", aria: { labelledby: "ontology-admin-tab" }} + - t.item_content do %div.ontologies_list_container.mt-3 %table{:style => "float:left;"} %tr @@ -79,9 +73,8 @@ %span.ui-button-text{:class => "report_date_generated_button"} %p.tab_description{:style => "clear:both;"} %table#adminOntologies.zebra{:cellpadding => "0", :cellspacing => "0", :width => "100%"} + - t.item_content do - -# Licensing tab - %div.tab-pane.fade{id: "licensing", role: "tabpanel", aria: { labelledby: "licensing-admin-tab" }} %div#renew-license-notice %table.table.table-sm.table-bordered.mt-5#license-table @@ -89,22 +82,18 @@ %tr %th{scope: "col"} Licensed to %th{scope: "col"} Appliance ID - %th{scope: "col"} Valid till + %th{scope: "col"} Valid till %th{scope: "col"} Days remaining %tbody %div.mb-5#renew-license-button - = link_to("Renew license", new_admin_license_path(), class: "btn btn-primary", role: "button", remote: "true") + = link_to("Renew license", new_admin_license_path, class: "btn btn-primary", role: "button", remote: "true") %div.mb-5#renew-license-form - - -# Users tab - %div.tab-pane.fade{id: "users", role: "tabpanel", aria: { labelledby: "users-admin-tab" }} + - t.item_content do %div.ontologies_list_container.mt-3 %table#adminUsers.zebra{:cellpadding => "0", :cellspacing => "0", :width => "100%"} - - -# metadata tab - %div.tab-pane.fade{id: "ontologies_metadata_curator", role: "tabpanel", aria: { labelledby: "ontologies_metadata_curator-admin-tab" }} + - t.item_content do = render partial: 'ontologies_metadata_curator/metadata_tab' -# Groups tab diff --git a/app/views/annotator/index.html.haml b/app/views/annotator/index.html.haml index 6c12a1f555..ca9fa67bbc 100644 --- a/app/views/annotator/index.html.haml +++ b/app/views/annotator/index.html.haml @@ -3,7 +3,7 @@ %head = javascript_include_tag "bp_annotator" -%div.container-fluid +%div.container-fluid.flex-grow-1 %div.row %div.col %h2.mt-3 Annotator diff --git a/app/views/annotatorplus/index.html.haml b/app/views/annotatorplus/index.html.haml index 0fab2ce093..01cbdbbac5 100644 --- a/app/views/annotatorplus/index.html.haml +++ b/app/views/annotatorplus/index.html.haml @@ -3,7 +3,7 @@ %head = javascript_include_tag "bp_annotatorplus" -%div.container-fluid +%div.container-fluid.flex-grow-1 %div.row %div.col %h2.mt-3 Annotator + diff --git a/app/views/collections/_collection.html.haml b/app/views/collections/_collection.html.haml index a3310e7264..580c0b74e6 100644 --- a/app/views/collections/_collection.html.haml +++ b/app/views/collections/_collection.html.haml @@ -4,24 +4,8 @@ top_keys: %w[created modified comment note], bottom_keys: [], exclude_keys: %w[member]) do |c| - = c.header do - %tr - %td.label - ID - %td - %p - = collection["@id"] - %tr - %td{nowrap: ""} Preferred Name - %td - %p= get_collection_label(collection) - %tr - %td{nowrap: ""} Members count - %td - %p= collection["memberCount"] - %tr - %td.label - Type - %td - %p - = collection["@type"] \ No newline at end of file + - c.header(stripped: true) do |t| + - t.add_row({th: 'ID'}, {td: collection["@id"]}) + - t.add_row({th: 'Preferred Name'}, {td: get_collection_label(collection)}) + - t.add_row({th: 'Members count'}, {td: collection["memberCount"]}) + - t.add_row({th: 'Type'}, {td: collection["@type"]}) \ No newline at end of file diff --git a/app/views/concepts/_details.html.haml b/app/views/concepts/_details.html.haml index 2b225d586c..68b48e108f 100644 --- a/app/views/concepts/_details.html.haml +++ b/app/views/concepts/_details.html.haml @@ -43,6 +43,7 @@ %div.my-1 - @concept.memberOf.each do |v| = raw get_link_for_collection_ajax(v, @ontology.acronym, '_blank') + - unless @concept.inScheme.nil? || @concept.inScheme.empty? %tr %td{nowrap: ""} In Schemes diff --git a/app/views/errors/internal_server_error.html.erb b/app/views/errors/internal_server_error.html.erb deleted file mode 100644 index f44358e781..0000000000 --- a/app/views/errors/internal_server_error.html.erb +++ /dev/null @@ -1,3 +0,0 @@ -<%= content_tag :div, id: "bd", style: "clear: both; text-align: center; margin-top: 100px; margin-bottom: 100px;" do -%> -

    We're sorry but something has gone wrong. We have been notified of this error.

    -<% end -%> \ No newline at end of file diff --git a/app/views/errors/internal_server_error.html.haml b/app/views/errors/internal_server_error.html.haml new file mode 100644 index 0000000000..3a9b4c7df9 --- /dev/null +++ b/app/views/errors/internal_server_error.html.haml @@ -0,0 +1,15 @@ +.d-flex.align-items-center.flex-column.position-relative + = inline_svg("errors/agroportal.svg") + .position-absolute.text-center{style: "top: 425px; font-size: 30px; font-weight: 800; color: #263238;"} + %div + We're sorry but something has gone wrong. + %div + We have been notified of this error. + .buttons.d-flex.justify-content-center.mt-3 + %div{style: "width: 216px;"} + = render Buttons::RegularButtonComponent.new(id:'Home-button', value: "Go home", variant: "secondary", href: "/") + %div{style: "width: 216px; margin-left: 22px"} + = render Buttons::RegularButtonComponent.new(id:"feedback-button" ,value: "Send a feedback", variant: "primary", href: "/feedback") + + + diff --git a/app/views/errors/not_found.html.erb b/app/views/errors/not_found.html.erb deleted file mode 100644 index 2a07010605..0000000000 --- a/app/views/errors/not_found.html.erb +++ /dev/null @@ -1,5 +0,0 @@ -<%= content_tag :div, id: "bd", style: "clear: both; text-align: center; margin-top: 100px; margin-bottom: 100px;" do -%> -

    - <%= @error_message || "The page you are looking for wasn't found. Please try again." %> -

    -<% end -%> \ No newline at end of file diff --git a/app/views/errors/not_found.html.haml b/app/views/errors/not_found.html.haml new file mode 100644 index 0000000000..5aaf6ea2c6 --- /dev/null +++ b/app/views/errors/not_found.html.haml @@ -0,0 +1,12 @@ +.d-flex.align-items-center.flex-column.position-relative + = inline_svg("errors/agroportal.svg") + .position-absolute{style: "top: 442px; font-size: 30px; font-weight: 800; color: #263238;"} + = @error_message || "Page not found" + .buttons.d-flex.justify-content-center.mt-3 + %div{style: "width: 216px;"} + = render Buttons::RegularButtonComponent.new(id:'Home-button', value: "Go home", variant: "secondary", href: "/") + %div{style: "width: 216px; margin-left: 22px"} + = render Buttons::RegularButtonComponent.new(id:"feedback-button" ,value: "Send a feedback", variant: "primary", href: "/feedback") + + + diff --git a/app/views/fair_score/_details.html.haml b/app/views/fair_score/_details.html.haml index 7d3181b59e..b75d6fef23 100644 --- a/app/views/fair_score/_details.html.haml +++ b/app/views/fair_score/_details.html.haml @@ -1,4 +1,4 @@ -= turbo_frame_tag 'application_modal_content' do += render_in_modal do :javascript var scrollY = window.getScrollTop() $(document).ready(function(){ diff --git a/app/views/label_xl/show.html.haml b/app/views/label_xl/show.html.haml index 7b94c49718..f038b63cc5 100644 --- a/app/views/label_xl/show.html.haml +++ b/app/views/label_xl/show.html.haml @@ -1,22 +1,11 @@ -= turbo_frame_tag 'application_modal_content' do += render_in_modal do - if @label_xl && !@label_xl.empty? = render ConceptDetailsComponent.new(id:'skos-xl-label', acronym: @ontology_acronym, properties: @label_xl.properties, top_keys: %w[description comment], bottom_keys: %w[disjoint subclass is_a has_part], exclude_keys: []) do |c| - - c.header do - %tr - %td.label - ID - %td - %p - = @label_xl["@id"] - %tr - %td{nowrap: ""} Preferred Name - %td - %p= get_label_xl_label(@label_xl) - %tr - %td{nowrap: ""} Type - %td - %p= @label_xl["@type"] + - c.header(stripped: true) do |t| + - t.add_row({th: 'ID'}, {td: @label_xl["@id"]}) + - t.add_row({th: 'Preferred Name'}, {td: get_label_xl_label(@label_xl)}) + - t.add_row({th: 'Type'}, {td: @label_xl["@type"]}) diff --git a/app/views/layouts/_footer.html.haml b/app/views/layouts/_footer.html.haml index a88f4166f6..2cdd9b7c0a 100644 --- a/app/views/layouts/_footer.html.haml +++ b/app/views/layouts/_footer.html.haml @@ -1,33 +1,32 @@ -%footer.footer.pt-4.mt-5 - %div.container - %div.row - - $FOOTER_LINKS.to_h[:top].to_a.each do |footer_links_block| - %div.col-6.col-md - %h6= footer_links_block[:column_header] - %ul.list-unstyled - - footer_links_block[:links].each do |footer_links_row| - %li - - footer_links_row.each do |footer_link| - = render_footer_link footer_link - %div.row.legal-text - %div.col - = t('.grant_html', site: $SITE) - %div.row.pt-2 - - $FOOTER_LINKS.to_h[:bottom].to_a.each do |footer_links_block| - %div.col-6.col-md - - if footer_links_block[:column_header].present? - %h6= footer_links_block[:column_header] - %ul.list-inline - - footer_links_block[:links].each do |footer_links_row| - - footer_links_row.each_with_index do |footer_link, i| - %li.list-inline-item - = render_footer_link footer_link - - unless i >= footer_links_row.size - 1 - %li.list-inline-item - = raw(footer_links_block[:separator]) +%br +%br/ +.footer-container + %footer + .footer-header + .footer-logo + %img{:src => "#{asset_path("logos/ontoportal.svg")}"} + - logo = $UI_THEME.to_s.capitalize + - logo.sub! 'portal' , 'Portal' + %p + = logo + .footer-social-media-links + - $FOOTER_LINKS[:social].each do |link| + %a{:href => link[:link], :target => "_blank"} + %img{:src => "#{asset_path(link[:logo])}"}/ + .footer-nav-links + - $FOOTER_LINKS[:sections].each do |key, section_links| + %div + %h2 + = t("layout.footer."+key.to_s) + %div + - section_links.each do |section , link| + %a{:href => link, :target => "_blank"} + = t("layout.footer."+section.to_s) + + = javascript_include_tag "application" diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index 730a85af56..0530d32098 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -43,5 +43,5 @@ <%=render partial: 'layouts/topnav'%> -
    +
    <%=render partial: 'layouts/notices'%> \ No newline at end of file diff --git a/app/views/layouts/_notices.html.haml b/app/views/layouts/_notices.html.haml index 9119dc8152..35fe7cf79d 100644 --- a/app/views/layouts/_notices.html.haml +++ b/app/views/layouts/_notices.html.haml @@ -2,10 +2,7 @@ = license_notification(current_license()) - flash.each do |key, message| - %div{class: "flash alert #{flash_class(key)} alert-dismissible fade show", role: "alert"} - = message - %button{type: 'button', class: 'close', 'data-dismiss': 'alert', 'aria-label': 'Close'} - %span{'aria-hidden': 'true'} × + = render NotificationComponent.new(title: message , type: notification_type(key)) - do_not_display_subdomain_info_here = Set.new(["homeall_resources"]) - if at_slice? && !do_not_display_subdomain_info_here.include?("#{controller.controller_name}#{controller.action_name}") diff --git a/app/views/layouts/_ontology_viewer.html.haml b/app/views/layouts/_ontology_viewer.html.haml index 709267865b..e713da6052 100644 --- a/app/views/layouts/_ontology_viewer.html.haml +++ b/app/views/layouts/_ontology_viewer.html.haml @@ -51,7 +51,7 @@ - = render TurboModalComponent.new(id: 'application_modal') + = modal_frame_container -# Modal dialog for getting a permanent link to a class (must reside in a top-level position in the document to display properly). %div#classPermalinkModal{class: "modal fade", tabindex: "-1", role: "dialog", aria: {labelledby: "classPermalinkLabel", hidden: "true"}} diff --git a/app/views/layouts/_topnav.html.haml b/app/views/layouts/_topnav.html.haml index 8c3e73e764..3ab3c4d6be 100644 --- a/app/views/layouts/_topnav.html.haml +++ b/app/views/layouts/_topnav.html.haml @@ -1,56 +1,55 @@ -%nav.navbar.navbar-expand-lg.navbar-dark.navbar-custom - = link_to(image_tag("logos/ontoportal-logo.png") + content_tag(:span, $SITE, class: 'site-name'), root_path(), class: "navbar-brand") - = button_tag(type: "button", class: "navbar-toggler", data: {toggle: "collapse", target: "#topNavigationToggler"}, aria: {controls: "topNavigationToggler", expanded: "false", label: "Toggle navigation"}) do - %span.navbar-toggler-icon - - %div#topNavigationToggler.navbar-collapse.collapse.justify-content-between - %ul.navbar-nav - %li.nav-item - = link_to("Browse", ontologies_path(), class: "nav-link") - %li.nav-item - = link_to("Search", "/search", class: "nav-link") - %li.nav-item - = link_to("Mappings", mappings_path(), class: "nav-link") - %li.nav-item - = link_to("Recommender", recommender_index_path, class: "nav-link") - %li.nav-item - = link_to("Annotator", annotator_index_path(), class: "nav-link") - - if $NCBO_ANNOTATORPLUS_ENABLED == true - %li.nav-item - = link_to("NCBO Annotator+", '/ncbo_annotatorplus', class: "nav-link") - %li.nav-item - = link_to("Projects", projects_path(), class: "nav-link") - %li.nav-item - = link_to("Landscape", '/landscape', class: "nav-link") - -if (!session[:user].nil? && session[:user].admin?) - %li.nav-item - = link_to("Admin", admin_index_path, class: "nav-link") - %ul.navbar-nav - - if session[:user].nil? - %li.nav-item - = link_to("Login", login_index_path(redirect: request.original_url), class: "btn btn-bp-login mr-md-2") +.nav-container{data: {controller:"topnav-responsiveness"}} + %nav.top-nav + .nav-responsiveness-container + %a.nav-logo{href: "/"} + %img{:src => asset_path("logo-white.svg")}/ + %p + = portal_name + %input#nav-menu{:type => "checkbox", 'data-topnav-responsiveness-target': 'navMenu'} + %label.menu-btn{:for => "nav-menu"} + %i.fas.fa-bars + .nav-items + %ul.top-nav-ul + - navitems.each do |navItem| + %li.nav-ul-li + %a{href: navItem[0], class: ("active" if current_page?(navItem[0]))} #{navItem[1]} + - if current_page?('/') + .nav-search-container{style:'visibility: hidden'} + %input - else - -# Account menu - %li.nav-item.dropdown - = link_to("#", id: "accountMenuDropdownLink", class: "nav-link dropdown-toggle", role: "button", data: {toggle: "dropdown"}, aria: {haspopup: "true", expanded: "false"}) do - = session[:user].username - %div.dropdown-menu.dropdown-menu-right{aria: {labelledby: "accountMenuDropdownLink"}} - = link_to("Account Settings", "/account", class: "dropdown-item") - - unless session[:ontologies].nil? - %div.dropdown-divider - %h6.dropdown-header Recently Viewed - - for ont in session[:ontologies] - = link_to(ont.ontology_name, "/ontologies/#{ont.ontology_acronym}/?p=classes&conceptid=#{CGI.escape(ont.concept)}", class: "dropdown-item") - %div.dropdown-divider - = link_to("Logout", logout_path, class: "dropdown-item") - -# Support menu - %li.nav-item.dropdown - = link_to("#", id: "supportMenuDropdownLink", class: "nav-link dropdown-toggle", role: "button", data: {toggle: "dropdown"}, aria: {haspopup: "true", expanded: "false"}) do - Support - %div.dropdown-menu.dropdown-menu-right{aria: {labelledby: "supportMenuDropdownLink"}} - = link_to("Submit Feedback", feedback_path(location: encode_param(request.url)), id: "submitFeedbackMenuItem", class: "dropdown-item pop_window") - %div.dropdown-divider - %h6.dropdown-header Documentation - = link_to("Help", "#{$WIKI_HELP_PAGE}", target: "_blank", class: "dropdown-item") - = link_to("Release Notes", "#{$RELEASE_NOTES}", target: "_blank", class: "dropdown-item") - = link_to("Publications", $PUBLICATIONS_URL, target: "_blank", class: "dropdown-item") + .nav-search-container{'data-controller': "home-search"} + %input.nav-input{:placeholder => "Search in "+portal_name+" ...", :type => "text", :name => "search", 'data-home-search-target': 'input', 'data-action': 'input->home-search#search blur->home-search#blur'} + #home-search-drop-down.nav-search-drop-down{'data-home-search-target': 'dropDown', 'data-action': 'mousedown->home-search#prevent'} + %a.home-search-ontology-content#home-search-ontology-content{href: "#", 'data-home-search-target': 'searchOntologyContent'} + %p#seached-ontology{'data-home-search-target': 'ontology'} + %div + %img{src: asset_path("loop.svg")}/ + %p Search ontology content + %a.home-search-ontology-content#home-search-ontologies{href: "#", 'data-home-search-target': 'homeSearchOntologies'} + %p#seached-ontologies{'data-home-search-target': 'searchedOntologies'} + %div + %img{src: asset_path("loop.svg")}/ + %p See all ontologies + %a.nav-a{:href => "/login"} Login + + = select_tag('language', options_for_select([['EN','en'],['FR','fr']]), id: 'language-select', class: 'nav-language', + data: { controller: "platform-language", action: "change->platform-language#handleLangChanged" }) + + = render DropdownButtonComponent.new(css_class:'text-white') do |d| + - d.header do + = link_to("#", id: "supportMenuDropdownLink", class: "nav-link supportMenuDropdownLink", role: "button") do + Support + - d.with_section(divide: false) do |s| + - s.item do + = link_to(t(:submit_feedback), feedback_path(location: encode_param(request.url)), id: "submitFeedbackMenuItem", class: "pop_window") + - d.with_section do |s| + - s.header do + Documentation + - s.item do + = link_to(t(:_help), "#{$WIKI_HELP_PAGE}", target: "_blank") + - s.item do + = link_to(t(:_release_notes), "#{$RELEASE_NOTES}", target: "_blank") + - s.item do + = link_to(t(:_publications), $PUBLICATIONS_URL, target: "_blank") + + diff --git a/app/views/layouts/appliance.html.haml b/app/views/layouts/appliance.html.haml index aae2cc1d6c..5794e48657 100644 --- a/app/views/layouts/appliance.html.haml +++ b/app/views/layouts/appliance.html.haml @@ -28,9 +28,10 @@ %body{:class => "#{controller_name} #{action_name}"} = render partial: "layouts/topnav" - %div.container-fluid + %div.container-fluid.flex-grow-1 = render partial: "layouts/notices" - = render TurboModalComponent.new(id: 'application_modal') + = modal_frame_container + = yield = render partial: "layouts/footer" diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 5ff643c328..8b025f31a5 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -8,7 +8,7 @@ <%= javascript_include_tag "application"%> -<%= render TurboModalComponent.new(id: 'application_modal') %> +<%= modal_frame_container %> <%= yield %> diff --git a/app/views/layouts/component_preview.html.erb b/app/views/layouts/component_preview.html.erb new file mode 100644 index 0000000000..5369cd0531 --- /dev/null +++ b/app/views/layouts/component_preview.html.erb @@ -0,0 +1,59 @@ + + + Component Preview + + <%= stylesheet_link_tag "application" %> + <%= javascript_include_tag "vendor" %> + + + + <%= modal_frame_container %> +
    + <%= yield %> + <%= javascript_include_tag "application" %> +
    + + + \ No newline at end of file diff --git a/app/views/layouts/component_preview_not_centred.html.erb b/app/views/layouts/component_preview_not_centred.html.erb new file mode 100644 index 0000000000..81b1c29645 --- /dev/null +++ b/app/views/layouts/component_preview_not_centred.html.erb @@ -0,0 +1,56 @@ + + + Component Preview + + <%= stylesheet_link_tag "application" %> + <%= javascript_include_tag "vendor" %> + + + + <%= modal_frame_container %> + <%= yield %> + <%= javascript_include_tag "application" %> + + \ No newline at end of file diff --git a/app/views/layouts/ontology.html.erb b/app/views/layouts/ontology.html.erb index 78c31664cf..b3d793d232 100644 --- a/app/views/layouts/ontology.html.erb +++ b/app/views/layouts/ontology.html.erb @@ -1,6 +1,6 @@ <%=render partial: 'layouts/header'%>
    - <%= render TurboModalComponent.new(id: 'application_modal')%> + <%= modal_frame_container%> <%=yield%>
    <%=render partial: 'layouts/footer'%> diff --git a/app/views/layouts/ontology_viewer/_header.html.haml b/app/views/layouts/ontology_viewer/_header.html.haml new file mode 100644 index 0000000000..a77aa452bd --- /dev/null +++ b/app/views/layouts/ontology_viewer/_header.html.haml @@ -0,0 +1,34 @@ +- sub = @submission_latest +- details_available = true +- if sub.nil? || (sub.respond_to?(:status) && sub.status == 404) + - details_available = false +-# A header of sorts to display ontology name and subset of details. +%div.ont-info-bar.rounded + %div + %h4 + = link_to(@ontology.name, ontology_path(@ontology.acronym)) + %div + - if (details_available && !sub.released.nil?) + %span.text-muted + = t('ontology_details.header.last_uploaded') + = l(Date.parse(sub.creationDate), format: :monthfull_day_year) + %div.ont-info-links + - unless (@ontology.summaryOnly || @ont_restricted || @submission_latest.nil?) + = link_to(@submission_latest.id + "/download?apikey=#{get_apikey}", "aria-label": "Download latest version", title: "Download latest version") do + %i.fas.fa-lg.fa-download{"aria-hidden": true} + - if details_available + - if $PURL_ENABLED + = link_to(@ontology.purl, "aria-label": "BioPortal PURL", title: "BioPortal PURL", target: "_blank") do + %i.fas.fa-lg.fa-link{"aria-hidden": true} + = link_to(sub.homepage, "aria-label": "Ontology home page", title: "Ontology home page", target: "_blank") do + %i.fas.fa-lg.fa-home{"aria-hidden": true} + - unless sub.documentation.nil? + = link_to(sub.documentation, "aria-label": "Ontology documentation", title: "Ontology documentation", target: "_blank") do + %i.fas.fa-lg.fa-book-reader{"aria-hidden": true} + - unless sub.publication.nil? + - Array(sub.publication).each do |pub| + = link_to(pub, "aria-label": "Ontology publications", title: "Ontology publications", target: "_blank") do + %i.fas.fa-lg.fa-book{"aria-hidden": true} + - if @ontology.admin?(session[:user]) + = link_to(edit_ontology_path(@ontology.acronym), "aria-label": "Edit ontology details", title: "Edit ontology details") do + %i.fas.fa-lg.fa-user-edit \ No newline at end of file diff --git a/app/views/login/index.html.haml b/app/views/login/index.html.haml index 16d6b495a4..ae71c1c1fc 100644 --- a/app/views/login/index.html.haml +++ b/app/views/login/index.html.haml @@ -14,7 +14,8 @@ = password_field 'user','password', :autocomplete => "off", class: "login-input password-input", placeholder: "Enter your password" %a.login-forgot-password{:href => "/lost_pass"} %p Forgot password? - %input.login-button{"data-disable-with" => "Login", :name => "commit", :type => "submit", :value => "Login"}/ + .login-button-container + = render Buttons::RegularButtonComponent.new(value: "Login", name: "commit", type: "submit") %p.dont-have-account Don't have an account? %a.text-decoration-none{:href => new_user_path} Register diff --git a/app/views/mappings/_count.html.haml b/app/views/mappings/_count.html.haml index 149d59d7af..a0a244cec5 100644 --- a/app/views/mappings/_count.html.haml +++ b/app/views/mappings/_count.html.haml @@ -1,19 +1,19 @@ -%table#mapping_count_table.zebra{cellpadding: "0", cellspacing: "0"} - %thead - %tr - %th Ontology - %th Mappings - %tbody - - if @mapping_counts.blank? - %tr - %td There are no mappings to or from this ontology - %td   - - else - - for mapping_count in @mapping_counts - %tr - %td - %a.facebox{href: "/mappings/show_mappings?id=#{@ontology_acronym}&target=#{mapping_count[:target_ontology].id}&height=600&width=800"}= mapping_count[:target_ontology].name - %td= number_with_delimiter(mapping_count[:count], delimiter: ',') += render TableComponent.new(id: 'mapping_count_table') do |t| + - t.header do |h| + - h.th {'Ontology'} + - h.th {'Mappings'} + + - if @mapping_counts.blank? + - t.row do |r| + - r.td {'There are no mappings to or from this ontology'} + - r.td {' '} + - else + - @mapping_counts.each do |mapping_count| + - t.row do |r| + - r.td do + %a.facebox{href: "/mappings/show_mappings?id=#{@ontology_acronym}&target=#{mapping_count[:target_ontology].id}&height=600&width=800"}= mapping_count[:target_ontology].name + - r.td do + = number_with_delimiter(mapping_count[:count], delimiter: ',') :javascript $(document).ready(() => { diff --git a/app/views/mappings/bulk_loader/_loader.html.haml b/app/views/mappings/bulk_loader/_loader.html.haml index 14a556b23f..242a50b71c 100644 --- a/app/views/mappings/bulk_loader/_loader.html.haml +++ b/app/views/mappings/bulk_loader/_loader.html.haml @@ -1,4 +1,4 @@ -= turbo_frame_tag 'application_modal_content' do += render_in_modal do %div.d-flex.flex-column{:style => "overflow: auto; max-height: 600px;"} = render TurboFrameComponent.new(id: 'file_loader_result') do %div.my-2 @@ -14,6 +14,6 @@ = JSON.pretty_generate @example_code = form_with url: '/mappings/loader', method: :post, multipart: true, data: { turbo: true} do %div - = render FileInputLoaderComponent.new(name: :file) + = render Input::FileInputComponent.new(name: :file) %button.btn.btn-secondary.btn-block.mt-2{type:'submit'} Save diff --git a/app/views/mappings/edit.html.haml b/app/views/mappings/edit.html.haml index 21bdd3f7ce..4e37b31fc5 100644 --- a/app/views/mappings/edit.html.haml +++ b/app/views/mappings/edit.html.haml @@ -1,2 +1,2 @@ -= turbo_frame_tag 'application_modal_content' do += render_in_modal do = render partial: 'form', locals: {form_url: mapping_path} diff --git a/app/views/mappings/index.html.haml b/app/views/mappings/index.html.haml index 438f3658f8..94807c1941 100644 --- a/app/views/mappings/index.html.haml +++ b/app/views/mappings/index.html.haml @@ -1,5 +1,5 @@ - @title = "Mappings" -%div#mappings_container.container-fluid.py-4 +%div#mappings_container.container-fluid.py-4.flex-grow-1 %h1.my-1 Mappings %div#mappings_uploader.my-2 diff --git a/app/views/mappings/new.html.haml b/app/views/mappings/new.html.haml index 05cf6fb892..48e195b106 100644 --- a/app/views/mappings/new.html.haml +++ b/app/views/mappings/new.html.haml @@ -1,2 +1,2 @@ -= turbo_frame_tag 'application_modal_content' do += render_in_modal do = render partial: 'form', locals: {form_url: mappings_path} diff --git a/app/views/ncbo_annotatorplus/index.html.haml b/app/views/ncbo_annotatorplus/index.html.haml index ba1315f020..9d9cffc470 100644 --- a/app/views/ncbo_annotatorplus/index.html.haml +++ b/app/views/ncbo_annotatorplus/index.html.haml @@ -3,7 +3,7 @@ %head = javascript_include_tag "bp_annotator" -%div.container-fluid.annotator +%div.container-fluid.annotator.flex-grow-1 %div.row %div.col %h2.mt-3 NCBO Annotator + diff --git a/app/views/notes/_new_comment.html.haml b/app/views/notes/_new_comment.html.haml index 885115ebe0..95b8b08040 100644 --- a/app/views/notes/_new_comment.html.haml +++ b/app/views/notes/_new_comment.html.haml @@ -1,4 +1,4 @@ -= turbo_frame_tag "application_modal_content" do += render_in_modal do = render_alerts_container = form_with url: notes_path, method: 'post', data:{turbo: true, 'turbo-frame': '_top'} do = hidden_field_tag 'parent', parent_id diff --git a/app/views/notes/_new_proposal.html.haml b/app/views/notes/_new_proposal.html.haml index 9a3abbd8c0..64e0976a0d 100644 --- a/app/views/notes/_new_proposal.html.haml +++ b/app/views/notes/_new_proposal.html.haml @@ -1,4 +1,4 @@ -= render TurboFrameComponent.new(id: 'application_modal_content') do += render_in_modal do :javascript function updateProposalForm(event){ let frame = document.getElementById('application_modal_content') diff --git a/app/views/notes/_note_line.html.haml b/app/views/notes/_note_line.html.haml index 77823dd579..ce50b99bad 100644 --- a/app/views/notes/_note_line.html.haml +++ b/app/views/notes/_note_line.html.haml @@ -1,29 +1,26 @@ -%tr{id: "#{note.id}_tr_#{parent_type}"} - %td += render TableRowComponent.new(id: "#{note.id}_tr_#{parent_type}") do |row| + - row.td do - if current_user_admin? - alert_text = "Are you sure you want to delete the note ''" + (note.subject || '') + "'' created by " + note.creator.split('/')[-1] + "?
    This action CAN NOT be undone!!!" = button_to "Delete", notes_path(noteid: note.id, parent_type: parent_type), method: :delete, class:'btn btn-sm btn-link', form: {data: { turbo: true, turbo_confirm: alert_text, turbo_frame: '_top'}} - %td + - row.td do - note_link = "/ontologies/#{ontology_acronym}/notes/" - note_link = "#{note_link}?noteid=#{CGI.escape(note.id)}" = link_to_modal note.subject || note_link , note_link, id:"row_#{note.id}", - class: "ont_notes_list_link notes_list_link", - data: { show_modal_title_value: ""} + class: "ont_notes_list_link notes_list_link", + data: { show_modal_title_value: ""}     %span{:id => "#{note.id}_row_archived", :style => "font-size: x-small; color: grey;"} - if note.archived archived - %td.d-none - = note.subject - %td.d-none - = note.archived || "false" - %td + - row.td do = note.creator.split('/')[-1] - %td + + - row.td do = note.proposal ? get_note_type_text(note.proposal.type) : "Comment" - if parent_type.eql?('ontology') - %td + - row.td do - if note.relatedClass && note.relatedClass.length > 0 - %a{href: "/ontologies/#{ontology_acronym}?p=classes&conceptid=#{CGI.escape(note.relatedClass.first)}"}= note.relatedClass.first - %td + %a{href: "/ontologies/#{ontology_acronym}?p=classes&conceptid=#{CGI.escape(note.relatedClass.first)}", 'data-turbo': 'false'}= note.relatedClass.first + - row.td do = DateTime.parse(note.created).strftime("%Y-%m-%d") \ No newline at end of file diff --git a/app/views/notes/_notes.html.haml b/app/views/notes/_notes.html.haml index d7a13e4a65..57b77791a5 100644 --- a/app/views/notes/_notes.html.haml +++ b/app/views/notes/_notes.html.haml @@ -17,35 +17,21 @@ = render_alerts_container("notes_#{parent_type}_list_table_alerts") .ont_notes_table_container - %table.zebra.notes_ont_list_table{:id => "#{notes_table_id}", :style => "width: 100%;", :width => "100%"} - %thead - %tr - %th - Delete - %th - Subject - %th.d-none - Subject Sort - %th.d-none - Archive Sort - %th - Author - %th - Type - - if parent_type.eql?('ontology') - %th - Class - %th - Created - %tbody{id: "#{parent_type}_notes_table_content"} - - if @notes.nil? || @notes.empty? - %tr#ont_no_notes - %td{colspan: colspan} No notes to display - - (colspan-1).times.each do - %td - - else - - @notes.each do |note| - = render partial: 'notes/note_line', locals: {note: note, ontology_acronym: @ontology.acronym, parent_type: parent_type} + - cols = ['Action', 'Subject', 'Author', 'Type', (parent_type.eql?('ontology') ? 'Class' : nil),'Created'].compact + = render TableComponent.new(id:"#{parent_type}_notes") do |t| + - t.header do |row| + - row.create(*cols.map{|col| {th: col}}) + + - if @notes.nil? || @notes.empty? + - t.row do |row| + - row.td(colspan: colspan) do + %div.text-center + No notes to display + + - else + - @notes.each do |note| + = render partial: 'notes/note_line', locals: {note: note, ontology_acronym: @ontology.acronym, parent_type: parent_type} + :javascript jQuery(".ontologies.show").ready(function(){ jQuery("#hide_archived_ont").click(function(){ diff --git a/app/views/notes/show.html.haml b/app/views/notes/show.html.haml index 30214eaace..2bec344327 100644 --- a/app/views/notes/show.html.haml +++ b/app/views/notes/show.html.haml @@ -1,4 +1,4 @@ -= turbo_frame_tag 'application_modal_content' do += render_in_modal do - ontology_name = @ontology ? " on #{@ontology.name}" : "" - @title = "Note#{ontology_name} | #{@note.subject}" #note_container{:style => "padding: 1em;"} diff --git a/app/views/ontologies/concepts_browsers/_concepts_browser.html.haml b/app/views/ontologies/concepts_browsers/_concepts_browser.html.haml index 1c4c5128c2..6531ba17ce 100644 --- a/app/views/ontologies/concepts_browsers/_concepts_browser.html.haml +++ b/app/views/ontologies/concepts_browsers/_concepts_browser.html.haml @@ -1,5 +1,8 @@ -%nav - .nav.nav-tabs.text-center{:role => "tablist", style:"background-color: rgba(0, 0, 0, 0.03);"} +%div#concept_browser + = render TabsContainerComponent.new(type:'outline') do |c| + - c.item(id: 'tree-tab', selected: default_sub_menu?) do + %span{title: 'Hierarchy view', 'data-controller': "tooltip"} + = inline_svg('icons/list-tree.svg', style:'width: 18px; height: 18px') %a#concepts-tree-tab.nav-item.nav-link.flex-grow-1.border-radius-0{"data-toggle" => "tab", :href => "#concepts-tree-container", title: 'Hierarchy view', 'data-controller': "tooltip", class: default_sub_menu_class} %img{src: asset_path('list-tree.svg') , style:'width: 25px; height: 25px'} diff --git a/app/views/ontologies/sections/visualize.html.haml b/app/views/ontologies/sections/visualize.html.haml index 14dee34229..83b470c2e3 100644 --- a/app/views/ontologies/sections/visualize.html.haml +++ b/app/views/ontologies/sections/visualize.html.haml @@ -5,7 +5,7 @@ - @enable_ontolobridge = !$NEW_TERM_REQUEST_ONTOLOGIES.nil? && $NEW_TERM_REQUEST_ONTOLOGIES.include?(@ontology.acronym) %div.tooltip %div#bd_content.bd_content.explore{data:{controller: 'container-splitter'}} - %div.sidebar.d-flex.flex-column.mr-2.card{data:{'container-splitter-target': 'container'}} + %div.sidebar.d-flex.flex-column.p-1.mr-1{data:{'container-splitter-target': 'container'}} = render partial: 'ontologies/concepts_browsers/concepts_browser' %div#concept_content.d-flex.flex-column.card.p-1.ml-2{data:{'container-splitter-target': 'container'}} = render partial: 'concepts/show' diff --git a/app/views/ontologies_metadata_curator/_form_edit.html.haml b/app/views/ontologies_metadata_curator/_form_edit.html.haml index 24ed94da2e..533cbde3b3 100644 --- a/app/views/ontologies_metadata_curator/_form_edit.html.haml +++ b/app/views/ontologies_metadata_curator/_form_edit.html.haml @@ -1,4 +1,4 @@ -= turbo_frame_tag 'application_modal_content' do += render_in_modal do :javascript function saveSelectedTab(value){ const input = document.getElementById("active_ontology") diff --git a/app/views/schemes/_scheme.html.haml b/app/views/schemes/_scheme.html.haml index 91607bf91e..2fcf310c95 100644 --- a/app/views/schemes/_scheme.html.haml +++ b/app/views/schemes/_scheme.html.haml @@ -5,19 +5,8 @@ top_keys: %w[description comment], bottom_keys: %w[disjoint subclass is_a has_part], exclude_keys: []) do |c| - = c.header do - %tr - %td.label - ID - %td - %p= scheme["@id"] - %tr - %td{nowrap: ""} Preferred Name - %td - %p= get_scheme_label(scheme) - %tr - %td.label - Type - %td - %p= scheme["@type"] + - c.header(stripped: true) do |t| + - t.add_row({th: 'ID'} , {td: scheme["@id"]}) + - t.add_row({th: 'Preferred Name'} , {td: get_scheme_label(scheme)}) + - t.add_row({th: 'Type'} , {td: scheme["@type"]}) diff --git a/app/views/submissions/_form_content.html.haml b/app/views/submissions/_form_content.html.haml index 5b55e4ec99..85896b8dc2 100644 --- a/app/views/submissions/_form_content.html.haml +++ b/app/views/submissions/_form_content.html.haml @@ -46,19 +46,16 @@ = text_area c.name, c.method_name, rows: 5, value: @submission.description, required: true, class: "form-control" -# Home page - = attribute_text_field_container('homepage') do |c| - - c.help do - Enter a URL for the main page of your ontology. + = form_group_attribute('homepage') do + Enter a URL for the main page of your ontology. -# Documentation page - = attribute_text_field_container('documentation') do |c| - - c.help do - Enter a URL for a page that provides ontology documentation. + = form_group_attribute('documentation') do + Enter a URL for a page that provides ontology documentation. -# Publications page - = attribute_text_field_container('publication') do |c| - - c.help do - Enter a URL for a page that lists publications about your ontology. + = form_group_attribute('publication') do + Enter a URL for a page that lists publications about your ontology. -# Used ontology engineering tool = form_group_attribute("usedOntologyEngineeringTool") @@ -105,6 +102,9 @@ = render NestedFormInputsComponent.new do |c| - c.template do = render partial: "submissions/submission_contact_form", locals: {contact: nil, index: 'NEW_RECORD'} + - c.empty_state do + = hidden_field_tag object_name+"[contact][#{@submission.contact.size}][email]" + = hidden_field_tag object_name+"[contact][#{@submission.contact.size}][name]" - @submission.contact.each_with_index do |contact, i| - c.row do = render partial: "submissions/submission_contact_form", locals: {contact: contact, index: i} diff --git a/app/views/users/_form.html.haml b/app/views/users/_form.html.haml index 4697bc2d8d..e70512e626 100644 --- a/app/views/users/_form.html.haml +++ b/app/views/users/_form.html.haml @@ -50,4 +50,5 @@ .d-flex %input#user_register_mail_list{:checked => "checked", :name => "user[register_mail_list]", :type => "checkbox", :value => "1"}/ %p#register-check-text Register for the AgroPortal's mailing list - %input.register-button{:type => "submit", :value => "Register"}/ + .register-button-container + = render Buttons::PrimaryButtonComponent.new(type: "submit", value: "Register") diff --git a/app/views/users/show.html.haml b/app/views/users/show.html.haml index ecd788660a..bf36574981 100644 --- a/app/views/users/show.html.haml +++ b/app/views/users/show.html.haml @@ -111,8 +111,8 @@ %h4.account-page-card-title Submitted ontologies .account-page-small-cards-container - @admin_ontologies.each do |ont| - .account-page-submitted-ontology - %a{href: "/ontologies/#{ont.acronym}"}= ont.name + .account-page-submitted-ontology{data: {controller: 'tooltip'}, title: ont.name} + %a{href: "/ontologies/#{ont.acronym}"}= ont.acronym - unless @user_projects.nil? || @user_projects.empty? - no_ontologies = false .account-page-card diff --git a/config/application.rb b/config/application.rb index f13cb361a8..ea51961b98 100644 --- a/config/application.rb +++ b/config/application.rb @@ -27,5 +27,8 @@ class Application < Rails::Application config.change_request = config_for :change_request config.generators.template_engine = :haml + + # Set the default layout to app/views/layouts/component_preview.html.erb + config.view_component.default_preview_layout = "component_preview" end end diff --git a/config/environments/appliance.rb b/config/environments/appliance.rb index db87393985..ec5f5e79f9 100644 --- a/config/environments/appliance.rb +++ b/config/environments/appliance.rb @@ -87,7 +87,7 @@ # Add custom data attributes to sanitize allowed list config.action_view.sanitized_allowed_attributes = ['id', 'class', 'style', 'data-cls', 'data-ont'] - + config.view_component.show_previews = true # TODO: Fix this? # enable json logging format. Useful for logstash # require 'rackstash' diff --git a/config/locales/en.yml b/config/locales/en.yml index b37ebbb559..29050980a3 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -1,66 +1,9 @@ en: - - about: > -
    -

    Abstract

    -

    - Many vocabularies and ontologies are produced to represent and annotate agronomic data. Therefore, there is a need of - a common platform to identify, host and use them in agro-informatics application. The AgroPortal project aims to offer - a reference ontology repository for agronomy, reusing the NCBO BioPortal technology. The scientific outcomes and the - experience of the biomedical domain are thus exploited and transposed in the agronomy domain, including plants, food, - environment and possibly animal sciences. We offer an ontology portal which features ontology hosting, search, versioning, - visualization, comment, recommendation, enables semantic annotation, as well as storing and exploiting ontology alignments. - All of these within a fully semantic web compliant infrastructure. The AgroPortal specifically pays attention to respect the - requirements of the agronomic community in terms of ontology formats (e.g., SKOS, trait dictionaries) or supported features. - AgroPortal project is based on five driving agronomic use cases which participate in the design and orientation of the platform. - AgroPortal already offers a robust and stable reference repository highly valuable for the agronomic domain. -

    -

    Use cases

    -
    -
    -

    New features

    -

    - See the release notes -

    -
    -

    Partners

    -

    The National Center For Biomedical Ontology (NCBO), Institut de Recherche pour le Développement (IRD), Research Data Alliance (RDA), - Bioversity International, Food & Agriculture Organization (FAO), Global Open Data for Agriculture & Nutrition (Godan Action), Institut National de la Recherche Agronomique (INRA)

    -

    Acknowledgments

    -

    The AgroPortal is partly achieved within the Semantic Indexing of French biomedical Resources (SIFR) project - that received funding from the EU H2020 research and innovation programme under the Marie Sklodowska-Curie (grant 701771) - and the French National Research Agency (grant ANR-12-JS02-01001), the NUMEV Labex (grant ANR-10-LABX-20), - the Computational Biology Institute of Montpellier (grant ANR-11-BINF-0002) as well as by University of Montpellier and the CNRS. - We also thank the National Center for Biomedical Ontologies for help and time spent with us in deploying the AgroPortal.

    -

    Team

    - To contact us: firstname.lastname@lirmm.fr -
      -
    • Clément Jonquet, researcher at LIRMM (Univ. of Montpellier, France), main investigator of the AgroPortal project
    • -
    • Anne Toulet, researcher at LIRMM (Univ. of Montpellier, France)
    • -
    • Vincent Emonet, engineer at LIRMM (Univ. of Montpellier, France)
    • -
    -
    - - activerecord: - errors: - models: - license: - attributes: - encrypted_key: - invalid_license_key: is an invalid license key - no_appliance_id_for_comparison: couldn't be validated. Unable to retrieve virtual appliance ID. - appliance_id_mismatch: is an appliance ID mismatch - - admin: - licenses: - create: - success: License successfully renewed! + nbco_annotatosplus: + score_help: "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)" + start_typing_to_select: "Start typing to select %{type} or leave blank to use all" + include_ancestors_up_to_level: "Include ancestors up to level" + include_score: "Include score" date: formats: @@ -116,7 +59,48 @@ en: tooltip: "Enable FastContext to detect : if a concept has been negated (affirmed, negated), who experienced the found concept (patient, other), when the annotated concept occurred (recent, historical, hypothetical), and/or if the annotated concept is uncertain (certain, uncertain)." sample_text: Melanoma is a malignant tumor of melanocytes which are found predominantly in skin but also in the bowel and the eye. - nbco_annotatosplus: + select: "Select %{name}" + + fast_context: + title: "FastContext" + help: "Activate FastContext to detect: if a concept has been negated (affirmed, negated), who experienced the concept found (patient, other), when the annotated concept occurred (recent, historical, hypothetical), and/or if the annotated concept is uncertain (certain, uncertain)." + + annotations: "Annotations" + + filters: + by: + filter: "Filter" + title: "Results are filtered by" + class: "Class" + ontology: "Ontology" + match_type: "Type" + match_context: "Context" + matched_class: "Associated Class" + matched_ontology: "Associated Ontology" + umls_sem_type: "UMLS Semantic Type" + score: "Score" + negation: "Negation" + experiencer: "Experiencer" + temporality: "Temporality" + certainty: "Certainty" + + additional_parameters_explained_at: "Additional parameters are explained on the page:" + format_results_as: "Format results as:" + reproduce_results_using: "Reproduce these results using the" + match_longest_only: "Match longest only" + match_partial_words: "Recognize partial words" + include_mappings: "Include mappings" + exclude_numbers: "Exclude numbers" + exclude_synonyms: "Exclude synonyms" + max_hierarchy_level: "Include ancestors up to level" + score: "Include score" + score_help: "Score annotations according to the previous NCBO 2009 measure (old) or score annotations using the C-Value measure (cvalue) or score annotations using the C-Value measure with hierarchy expansion (cvalueh)" + score_threshold: "Filter by score threshold" + score_threshold_help: "Specify the minimum score value for annotations" + confidence_threshold: "Filter confidence threshold" + confidence_threshold_help: "Specify the minimum position in the scores distribution (between 1 and 100)" + entity_recognizer: "entity recognition tool" + index: intro: > The NCBO Annotator+ is a proxy calling the NCBO Annotator Web service on the NCBO BioPortal. @@ -144,28 +128,425 @@ en: index: intro: Browse a selection of projects that use %{site} resources + landscape: + title: "%{site} Landscape" + intro: Visualize data retrieved from ontologies stored in the portal + groups_and_categories: Groups and Categories + ontologies_by: "Ontologies by %{type}" + ontologies_count_by_catalog: Number of ontologies in each data catalog + properties_use: Property Usage + properties_usage_proportion: The proportion of properties usage among stored ontologies + ontologies_languages: Natural languages of ontologies + ontologies_licenses: Licenses used by ontologies + ontology_tools: Most used tools to build ontologies + more_properties_charts: More properties charts + ontology_properties_pie_charts: Pie charts for the properties used in ontologies + owl_ontology_preflabel_uris: URIs for prefLabel properties used for OWL ontologies + owl_ontology_synonym_uris: URIs for synonym properties used for OWL ontologies + owl_ontology_definition_uris: URIs for definition properties used for OWL ontologies + owl_ontology_author_uris: URIs for author properties used for OWL ontologies + ontology_types: Ontology types + ontology_formality_levels: Formality levels of ontologies + ontologies_formats: Format used + ontologies_contributors: Contributors to ontology development + most_active_people: Most active people + most_mentioned_people: Most mentioned people as contact, creator, contributor or curator + most_active_organizations: Most active organizations + funding_endorsing_organizations: Organizations funding and endorsing the most ontologies + ontologies_activity_on: "Ontology Activity on %{site}" + most_active_people_as_reviewer: "Most active people as reviewers" + most_mentioned_people_as_reviewer: People who published notes, reviews, and projects + most_active_ontologies: "Most active ontologies" + ontologies_with_notes_reviews_projects: "Ontologies with notes, reviews, and projects" + ontology_relations_network: "Ontology Relations Network" + relations_between_stored_ontologies: "Relations between stored ontologies in the portal" + filter_network: "Filter network" + ontology_fairness_evaluator: "Ontology FAIRness Evaluator (O’FAIRe)" + average_metrics: "Average metrics" + group: Group + category: Category + size: Size + + home: + find_ontology: "Find an ontology" + search_class: "Search Class" + browse_by_group: "Browse by Group" + browse_ontologies: "Browse ontologies" + comprehensive_repository: "the most comprehensive repository of biomedical ontologies in the world" + advanced_search: "Advanced Search" + ontology_visits: "Ontology visits" + fair_scores: "FAIR Scores" + clear_selection: "Clear Selection" + latest_notes: "Latest Notes" + ontologies: "Ontologies" + classes: "Classes" + individuals: "People" + projects: "Projects" + users: "Users" + no_recent_notes: "No recent notes were submitted" + index: + find_ontology_placeholder: Start typing the ontology name, then choose from + query_placeholder: Enter a class, eg Melanoma + tagline: The home of vocabularies and ontologies in agronomy and related fields. + title: Welcome to the %{organization} + welcome: Welcome to %{site}, + help: + welcome: Welcome to the %{site} of the National Center for Biomedical Ontology. %{site} is a web application for accessing and sharing biomedical ontologies. + getting_started: > + %{site} allows users to browse, upload, download, search, comment, and create mappings for ontologies. + browse: > + Users can browse and explore individual ontologies by navigating either in a tree structure or in an animated graphical view. Users can also view mappings and + ontology metadata and ontology download. Additionally, logged in users can submit a new ontology to the library. + rest_examples_html: View documentation and examples for the %{site} REST API. + announce_list_html: > + To receive notices of new releases or site outages, please subscribe to + bioontology support list. + + recommend: + intro: Get recommendations for the most relevant ontologies from an excerpt of a biomedical text or a list of keywords + title: "recommender" + ontology_recommender: "Ontology Recommender" + ontology_recommendation_input: "Please paste a paragraph of text or some keywords to compute ontology recommendations." + weight_sum_greater_than_zero: "The sum of weights must be greater than zero" + weights_greater_than_zero: "All weights must be greater than or equal to zero" + valid_numeric_weights: "All weights must be valid numeric values" + valid_integer_max_ontologies_per_set: "Max ontologies per set must be a valid integer value" + valid_max_ontologies_per_set_range: "Max ontologies per set must be a number between 2 and 4" + recommendation_error: "Problem retrieving recommendations, please try again" + no_recommendations: "No recommendations found" + no_sets_recommended: "There are no recommended ontology sets for the provided input. Please try the 'Ontologies' output." + text_length_limit: "Please use less than 500 words. If you need to annotate longer pieces of text, you can use the recommendation web service." + + mappings: + title: "Correspondences" + upload_mappings: "Upload mappings" + mappings_bulk_load: "Mapping Bulk Load" + intro: "Browse mappings between classes of different ontologies" + no_mappings_available: "No mappings available" + loading_mappings: "Loading mappings..." + find_mappings: "Find mappings of a class/concept" + view_mappings_help: "View mappings help" + select_class: "Start typing to select a class" + select_ontologies: "Start typing to select ontologies or leave blank to use all ontologies" + select_semantic_types: "Select UMLS semantic types" + select_semantic_types_help: "Start typing to select UMLS semantic types or leave blank to use all types" + select_semantic_groups: "Select UMLS semantic groups" + select_semantic_groups_help: "Start typing to select UMLS semantic groups or leave blank to use all groups" + include_ancestors_up_to_level: "Include ancestors up to level" + include_score: "Include score" + + annotator: + title: "Annotator" + get_annotator: "Get annotations" + filters: + match_longest_only: "Match longest only" + match_partial_words: "Recognize partial words" + include_mappings: "Include Mappings" + exclude_numbers: "Exclude Numbers" + exclude_synonyms: "Exclude synonyms" + max_hierarchy_level: "Include ancestors up to level" + score: "Include score" + score_help: "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)" + score_threshold: "Filter by score threshold" + score_threshold_help: "Specify minimum score value for annotations" + confidence_threshold: "Filter Confidence Threshold" + confidence_threshold_help: "Specify the minimum position in the score distribution (between 1 and 100)" + recognizer recognizer: "entity recognition tool" + start_typing_to_select: "Start typing to select %{type} or leave blank to use all" + select: "Select %{name}" + enter_or_paste_text: "Enter or paste text to annotate" + fast_context: "FastContext" + lemmatize: "Lemmatize" + annotations_result: "Annotations" + results_filtered_by: "Results are filtered by" + + umls: + semantic_types: "UMLS Semantic Types" + semantic_groups: "UMLS Semantic Groups" + index: + intro: Get annotations for biomedical text with ontology classes + annotatorplus_html: Check out the beta version of AnnotatorPlus; a new version of the Annotator with added support for negation, and more! + fast_context: + tooltip: "Enable FastContext to detect: if a concept was denied (affirmed, denied), who experienced the found concept (patient, other), when the annotated concept occurred (recent, historical, hypothetical), and/ or if the annotated concept is uncertain (certain, uncertain)." + lemmatize: + tooltip: "Enable Lemmatize to lemmatize submitted text and use a lemmatized dictionary for annotations" + sample_text: Melanoma is a malignant tumor of melanocytes found mainly in the skin but also in the intestine and the eye. + + ontology_details: + metadata: + details: "Details" + acronym: "Acronym" + visibility: "Visibility" + viewing_restriction: "Viewing Restriction" + view_of_ontology: "View of ontology" + description: "Description" + status: "Status" + format: "Format" + contact: "Contact" + categories: "Categories" + groups: "Groups" + pull_url: "Pull URL" + submissions: "Submissions" + links: "Links" + add_submission: "Add Submission" + views_of: "Views of" + create_new_view: "Create a new view" + no_views_of: "No views of %{name} available" + go_to_rest_api_json_entry: "Go to REST API JSON Entry" + get_my_metadata_back: "Get my metadata back" + n_triple: "N-Triple" + json_ld: "JSON-LD" + rdf_xml: "RDF/XML" + view_individual_metrics_definitions: "View individual metrics definitions" + metrics: "Metrics" + metrics_not_calculated_yet: "We have not yet calculated metrics for" + classes: "Classes" + individuals: "Individuals" + properties: "Properties" + max_depth: "Maximum depth" + max_children: "Maximum number of children" + avg_children: "Average number of children" + single_child_classes: "Classes with a single child" + many_children_classes: "Classes with more than 25 children" + no_definition_classes: "Classes without definition" + visits: "Visits" + download_as_csv: "Download as CSV" + projects_using: "Projects Using" + no_projects_using: "No projects are using" + create_new_project: "Create a new project" + additional_metadata: "Additional Metadata" + + layout: + header: + browse: "Browse" + search: "Search" + mappings: "Mappings" + recommend: "Recommend" + annotator: "Annotator" + ncbo_annotator_plus: "NCBO Annotator+" + projects: "Projects" + landscape: "Landscape" + login: "Login" + account_setting: "Account Settings" + submit_feedback: "Send Feedback" + help: "Help" + release_notes: "Release Notes" + publications: "Publications" + footer: + products: Products + ontoportal: OntoPortal + release_notes: Release Notes + api: API + sparql: SPARQL + support: Support + contact_us: Contact Us + wiki: Wiki + documentation: Documentation + agreements: Agreements + terms: Terms + privacy_policy: Privacy Policy + cite_us: Cite Us + acknowledgments: Acknowledgments + about: About + about_us: About Us + projects: Projects + team: Team + copyright_html: Copyright © 2005-2022, Leland Stanford Junior University Board of Trustees. All rights reserved. + grant_html: > + %{site} is currently being developed as part of the ANR D2KAB project (ANR-18-CE23-0017). It receives or has also received support from the ANR SIFR project (ANR-12-JS02-0010), European Union Project H2020-MSCA SIFRm (N° 701771), the Labex NUMEV (ANR-10-LABX-20), the Montpellier IBC project (ANR-11 -BINF0002) , the Agro Labex (ANR-10-LABX-0001) as well than the University of Montpellier and the CNRS. + notes: + license_contact: > + For more information, email support@ontoportal.org or + visit https://ontoportal.org/licensing. + license_obtain: > + If you are the owner of this OntoPortal installation, you can visit + https://license.ontoportal.org to obtain a license. + license_expired: > + We're sorry, but the license for this OntoPortal installation has expired. If you are the owner of this OntoPortal installation, + please visit https://license.ontoportal.org to renew your license. + license_trial: + one: This OntoPortal appliance installation is a trial license, which will expire in 1 day. + other: This OntoPortal appliance installation is a trial license, which will expire in %{count} days. + # Other + + about: > +
    +

    Summary

    +

    + Many vocabularies and ontologies are produced to represent and annotate agronomic data. It is therefore necessary to have a common platform to identify them, host them and use them in agro-informatics applications. The AgroPortal project aims to provide a repository of reference ontologies for agronomy, by reusing the NCBO BioPortal technology. The scientific results and the experience of the biomedical field are thus exploited and transposed in the field of agronomy, including plants, food, the environment and possibly animal sciences. We propose an ontology portal that offers ontology hosting, search, versioning, visualization, commenting, recommendation, allows semantic annotation, as well as storing and exploiting alignments of ontologies. All this in an infrastructure fully compliant with the Semantic Web. The AgroPortal project pays particular attention to meeting the requirements of the agronomic community in terms of ontology formats (e.g. SKOS, trait dictionaries) or supported functionalities. The AgroPortal project is based on five agronomic use cases that participate in the design and orientation of the platform. AgroPortal already offers a robust and stable reference repository, of great value for the field of agronomy. +

    +

    Use cases

    + +
    +

    New Features

    +

    + See the release-notes +

    +
    +

    Partners

    +

    The National Center for Biomedical Ontology (NCBO), the Research Institute for Development (IRD), Research Data Alliance (RDA), + Bioversity International, Food & Agriculture Organization (FAO), Global Open Data for Agriculture & Nutrition (Godan Action), National Institute for Agronomic Research (INRA)

    +

    thanks

    +

    The AgroPortail is partly produced as part of the Semantic Indexing of French Biomedical Resources project (SIFR) + who have received funding from the EU H2020 research and innovation program under Marie Sklodowska-Curie (grant 701771) + and the National Research Agency (ANR-12-JS02-01001 grant), Labex NUMEV (ANR-10-LABX-20 grant), + the Institute of Computational Biology of Montpellier (grant ANR-11-BINF-0002) as well as by the University of Montpellier and the CNRS. + We also thank the National Center of Biomedical Ontologies for their help and the time spent with us in the deployment of the AgroPortail.

    +

    Team

    + To contact us: firstname.lastname@lirmm.fr +
      +
    • Clément Jonquet, researcher at LIRMM (Univ. of Montpellier, France), principal investigator of the AgroPortal project
    • +
    • Anne Toulet, researcher at LIRMM (Univ. of Montpellier, France)
    • +
    • Vincent Emonet, engineer at LIRMM (Univ. of Montpellier, France)
    • +
    +
    + + activaterecord: + errors: + models: + license: + attributes: + encrypted_key: + invalid_license_key: is an invalid license key + no_appliance_id_for_comparison: Could not be validated. Unable to retrieve virtual appliance ID. + appliance_id_mismatch: is an appliance id mismatch + + admin: + licenses: + create: + success: License renewed successfully! + + date: + formats: + year_month_day_concise: "%Y-%m-%d" # 2017-03-01 + month_day_year: "%b %-d, %Y" # Mar 1, 2017 + monthfull_day_year: "%B %-d, %Y" # March 1, 2017 + ontologies: - intro: Browse the library of ontologies + self: "Ontologies" + loading: Loading ontologies + intro: Browse the Ontology Library + please_wait: Please wait.. + browse: Explore + welcome_admin: Welcome admin + admin_help: This color indicates features reserved for administrators + debug_info: Debug Info + submit_new_ontology: Submit a new ontology + entry_type: Entry Type + uploaded_in_the_last: Uploaded in the last concepts: request_term: new_term_instructions: > -

    This ontology integrates with OntoloBridge, allowing community users to suggest additions to the public ontology. Complete the template below to submit a term request directly to the ontology maintainer.

    -
    -

    Term Label (required)
    Suggested term name. If a term can be described with multiple synonyms, only list the preferred name here.

    -
    -
    -

    Term description (required)
    A brief definition, description, or usage of your suggested term. Additional term synonyms may be listed in this section.

    -
    -
    -

    Superclass (required)
    The parent term of the suggested term. The parent term should be an existing entry of the current ontology. The superclass can be selected directly from Bioportal's Classes tree viewer.

    -
    -
    -

    References (optional)
    Provide evidence for the existence of the requested term such as Pubmed IDs of papers or links to other resources that describe the term.

    -
    -
    -

    Justification (optional)
    Provide any additional information about the requested term here.

    -
    - mappings: - intro: Browse mappings between classes in different ontologies +

    This ontology integrates with OntoloBridge, allowing community users to suggest additions to the public ontology. Complete the template below to submit a term request directly to the Ontology Manager.

    +
    +

    Term label (required)
    Suggested term name. If a term can be described with more than one synonym, enter only the preferred name here.

    +
    +
    +

    Term Description (required)
    A brief definition, description, or usage of the suggested term. Synonyms of additional terms may be listed in this section.

    +
    +
    +

    Superclass (required)
    The parent term of the suggested term. The parent term must be an existing entry in the current ontology. The superclass can be selected directly from the Bioportal class tree.

    +
    +
    +

    References (optional)
    Provide evidence that the requested term exists, such as Pubmed IDs of articles or links to other resources describing the term.

    +
    +
    +

    Justification (optional)
    Provide here any additional information about the requested term.

    +
    + + # General + + showing: Display + of: of + sort: Sort + popular: Popular + name: Name + classes_count: Number of classes + instances_concepts_count: Number of instances/concepts + Notes: Notes + upload_date: Upload date + release_date: Release date + fair_score: FAIR score + search_rank: Search Rank + no_matches: No matches! + uploaded: Uploaded + view_of: View of + view: View + summary_only: Summary only + groups: Groups + categories: Categories + admins: Administrators + status: Status + no_submissions_available: No submissions available + classes: classes + category: Category + group: Group + size: size + ontology_content: Ontology content + natural_language: Natural language + formality_levels: Formality levels + is_of_type: Is of type + missing_status: Missing Status + types: Types + artifacts: Artifacts + formats: formats + selected_ontologies: Selected ontologies + all: "All" + none: "none" + keywords: "Keywords" + keywords_separated_by_commas: "Keywords separated by commas" + see_details: "See details" + view_fair_scores_definitions: "View fair scores definitions" + get_json_version: "Get the json version" + select_ontologies: "Start typing to select ontologies or leave blank to use them all" + clear_selection: "Clear Selection" + select_from_list: "Select from list" + more: "More" + statistics: "Statistics" + average: "Average" + min: "Min" + max: "Max" + median: "Median" + slices: "Slices" + help: "Help" + or: "Or" + show_advanced_options: "Show advanced options" + insert_sample_text: "Insert sample text" + class: "Class" + filter: "Filter" + ontology: "Ontology" + type: "Type" + context: "Context" + umls_sem_type: "UMLS Sem Type" + matched_ontology: "matched ontology" + matched_class: "Matched class" + score: "Score" + negation: "negation" + experience: "Experience" + temporality: "Temporality" + certainty: "Certainty" + format_results: "Format results as " + reproduce_results: "Reproduce these results using the " + additional_parameters: "Additional Parameters Explained at " + input: "Input" + text: "Text" + output: "Output" + ontology_sets: "Ontology sets" + insert_sample_input: "Insert sample input" + weights_configuration: "Weights Configuration" + coverage: "Coverage" + accept: "Accept" + knowledge_detail: "Knowledge Detail" + specialization: "Specialization" + max_ontologies_per_set: "Maximum number of ontologies per set" + paste_input_text: "Paste a paragraph of text or keywords to use in calculating ontology recommendations" + get_recommendations: "Get recommendations" + select_ontologies_list: "Select ontologies" diff --git a/config/routes.rb b/config/routes.rb index 096db77a19..56d1d4f52e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -150,6 +150,7 @@ get '/ajax/fair_score/json' => 'fair_score#details_json' get '/ajax/:ontology/instances' => 'instances#index_by_ontology' get '/ajax/:ontology/classes/:conceptid/instances' => 'instances#index_by_class', :constraints => { conceptid: /[^\/?]+/ } + get '/ajax/ontologies' , to:"ontologies#ajax_ontologies" # User get '/logout' => 'login#destroy', :as => :logout @@ -210,5 +211,7 @@ get '/visualize' => 'ontologies#visualize', :as => :visualize_concept, :constraints => { ontology: /[^\/?]+/, id: /[^\/?]+/, ontologyid: /[^\/?]+/, conceptid: /[^\/?]+/ } get '/exhibit/:ontology/:id' => 'concepts#exhibit' - + + mount Lookbook::Engine, at: "/lookbook" + end diff --git a/lib/tasks/generate_component_previews.rake b/lib/tasks/generate_component_previews.rake new file mode 100644 index 0000000000..2bc61c28b3 --- /dev/null +++ b/lib/tasks/generate_component_previews.rake @@ -0,0 +1,34 @@ +# lib/tasks/generate_component_previews.rake + +namespace :component_previews do + desc "Generate previews for all components" + task generate: :environment do + components_path = Rails.root.join("app/components") + components = Dir.glob("#{components_path}/**/*_component.rb") + + components.each do |component_path| + component_name = File.basename(component_path, "_component.rb") + preview_path = Rails.root.join("test/components/previews/#{component_name}_preview.rb") + + # Skip if the preview already exists + next if File.exist?(preview_path) + + File.open(preview_path, "w") do |file| + file.puts("class #{component_name.camelize}Preview < ViewComponent::Preview") + file.puts(" def default") + file.puts(" # Initialize the component with any necessary data") + file.puts(" component = #{component_name.camelize}Component.new") + + file.puts(" # Add any necessary data or context to the component") + file.puts(" # component.some_data = some_value") + + file.puts(" # Render the component") + file.puts(" render(component)") + file.puts(" end") + file.puts("end") + end + + puts "Generated preview for #{component_name}" + end + end +end diff --git a/package.json b/package.json index d112843e7c..94282d9136 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,9 @@ "flatpickr": "^4.6.13", "split.js": "^1.6.5", "stimulus-flatpickr": "^3.0.0-0", - "stimulus-rails-nested-form": "^4.0.0" + "stimulus-rails-nested-form": "^4.0.0", + "stimulus-read-more": "^4.1.0", + "tom-select": "^2.2.2" }, "scripts": { "build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds" diff --git a/spec/components/alert_message_component_spec.rb b/spec/components/alert_message_component_spec.rb deleted file mode 100644 index fd5488bc07..0000000000 --- a/spec/components/alert_message_component_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require "rails_helper" - -RSpec.describe AlertMessageComponent, type: :component do - pending "add some examples to (or delete) #{__FILE__}" - - # it "renders something useful" do - # expect( - # render_inline(described_class.new(attr: "value")) { "Hello, components!" }.css("p").to_html - # ).to include( - # "Hello, components!" - # ) - # end -end diff --git a/spec/components/file_input_loader_component_spec.rb b/spec/components/file_input_loader_component_spec.rb deleted file mode 100644 index 9e5190e865..0000000000 --- a/spec/components/file_input_loader_component_spec.rb +++ /dev/null @@ -1,15 +0,0 @@ -# frozen_string_literal: true - -require "rails_helper" - -RSpec.describe FileInputLoaderComponent, type: :component do - pending "add some examples to (or delete) #{__FILE__}" - - # it "renders something useful" do - # expect( - # render_inline(described_class.new(attr: "value")) { "Hello, components!" }.css("p").to_html - # ).to include( - # "Hello, components!" - # ) - # end -end diff --git a/test/components/previews/buttons/chip_button_component_preview.rb b/test/components/previews/buttons/chip_button_component_preview.rb new file mode 100644 index 0000000000..9ac36c8a30 --- /dev/null +++ b/test/components/previews/buttons/chip_button_component_preview.rb @@ -0,0 +1,19 @@ +class Buttons::ChipButtonComponentPreview < ViewComponent::Preview + + # @param url text + # @param text text + + def standard(url: "nil", text: "text") + render(ChipButtonComponent.new(url: url, text: text, type: "static")) + end + + # @param url text + # @param text text + + def clickable(url: "nil", text: "text") + render(ChipButtonComponent.new(url: url, text: text, type: "clickable")) + end + + + +end \ No newline at end of file diff --git a/test/components/previews/buttons/ontology_subscribe_button_component_preview.rb b/test/components/previews/buttons/ontology_subscribe_button_component_preview.rb new file mode 100644 index 0000000000..4d9c2b56dd --- /dev/null +++ b/test/components/previews/buttons/ontology_subscribe_button_component_preview.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class Buttons::OntologySubscribeButtonComponentPreview < ViewComponent::Preview + def default + render OntologySubscribeButtonComponent.new(ontology_id: '', subscribed: true, user_id: '') + end +end diff --git a/test/components/previews/buttons/pill_button_component_preview.rb b/test/components/previews/buttons/pill_button_component_preview.rb new file mode 100644 index 0000000000..f4cc6a9ac0 --- /dev/null +++ b/test/components/previews/buttons/pill_button_component_preview.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true + +class Buttons::PillButtonComponentPreview < ViewComponent::Preview + # @param text text + def default(text: 'hello') + render PillButtonComponent.new(text: text) + end +end diff --git a/test/components/previews/buttons/regular_button_component_preview.rb b/test/components/previews/buttons/regular_button_component_preview.rb new file mode 100644 index 0000000000..85894c64af --- /dev/null +++ b/test/components/previews/buttons/regular_button_component_preview.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true +class Buttons::RegularButtonComponentPreview < ViewComponent::Preview + include InlineSvg::ActionView::Helpers + layout 'component_preview_not_centred' + + def primary + render Buttons::RegularButtonComponent.new(id:'regular-button', value: "Login", variant: "primary") + + end + + def link + render Buttons::RegularButtonComponent.new(id:'regular-button', value: "Link", variant: "primary", href: "#") + end + + + def secondary + render Buttons::RegularButtonComponent.new(id:'regular-button', value: "Login", variant: "secondary") + end + + def slim + render Buttons::RegularButtonComponent.new(id:'regular-button', value: "Login", variant: "primary", size: "slim") + end + + def danger + render Buttons::RegularButtonComponent.new(id:'regular-button', value: "Login", variant: "primary", color: "danger") + end + + def warning + render Buttons::RegularButtonComponent.new(id:'regular-button', value: "Login", variant: "primary", color: "warning") + end + + def disabled + render Buttons::RegularButtonComponent.new(id:'regular-button', value: "Login", variant: "primary", state: "disabled") + end + + def no_animation + render Buttons::RegularButtonComponent.new(id:'regular-button', value: "Login", variant: "primary", state: "regular") + end + + def icon_left + render Buttons::RegularButtonComponent.new(id:'regular-button', value: "Login", variant: "primary") do |btn| + btn.icon_left do + inline_svg_tag "check.svg" + end + end + end + + def icon_right + + render Buttons::RegularButtonComponent.new(id:'regular-button', value: "Login", variant: "primary") do |btn| + btn.icon_right do + inline_svg_tag "check.svg" + end + end + end + +end \ No newline at end of file diff --git a/test/components/previews/buttons/rounded_button_component_preview.rb b/test/components/previews/buttons/rounded_button_component_preview.rb new file mode 100644 index 0000000000..685badf8ad --- /dev/null +++ b/test/components/previews/buttons/rounded_button_component_preview.rb @@ -0,0 +1,14 @@ +class Buttons::RoundedButtonComponentPreview < ViewComponent::Preview + + # @param icon text + # @param link text + # @param size select [small, medium, big] + + def default(icon: "json.svg", link: "text", size: "small") + render(RoundedButtonComponent.new(icon: icon, link: link, size: size)) + end + + + + +end \ No newline at end of file diff --git a/test/components/previews/concept_details_component_preview.rb b/test/components/previews/concept_details_component_preview.rb new file mode 100644 index 0000000000..3d486535a6 --- /dev/null +++ b/test/components/previews/concept_details_component_preview.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +class ConceptDetailsComponentPreview < ViewComponent::Preview + def default + properties = { links: nil, + context: nil, + "http://www.w3.org/2004/02/skos/core#narrower": ["http://opendata.inrae.fr/thesaurusINRAE/d_0101", + "http://opendata.inrae.fr/thesaurusINRAE/d_0103", + "http://opendata.inrae.fr/thesaurusINRAE/d_0102", + "http://opendata.inrae.fr/thesaurusINRAE/d_0104", + "http://opendata.inrae.fr/thesaurusINRAE/d_0105"], + "http://www.w3.org/1999/02/22-rdf-syntax-ns#type": ["http://www.w3.org/2004/02/skos/core#Concept", + "http://www.w3.org/2002/07/owl#NamedIndividual"], + "http://www.w3.org/2004/02/skos/core#topConceptOf": ["http://opendata.inrae.fr/thesaurusINRAE/thesaurusINRAE"], + "http://www.w3.org/2004/02/skos/core#prefLabel": ["01. ENVIRONMENT [domain]"], + "http://www.w3.org/2004/02/skos/core#inScheme": ["http://opendata.inrae.fr/thesaurusINRAE/thesaurusINRAE"], + "http://purl.org/dc/terms/modified": ["2021-02-24T15:25:56"] + } + schemes_keys = %w[hasTopConcept topConceptOf] + label_xl_set = %w[skos-xl#prefLabel skos-xl#altLabel skos-xl#hiddenLabel] + render ConceptDetailsComponent.new(id: 'concept-details', acronym: "Ontology", + properties: OpenStruct.new(properties), + top_keys: %w[description comment], + bottom_keys: %w[disjoint subclass is_a has_part], + exclude_keys: schemes_keys + label_xl_set + ['inScheme']) do |c| + c.header(stripped: true) do |table| + table.add_row({ th: 'ID' }, { td: "http://opendata.inrae.fr/thesaurusINRAE/d_1" }) + table.add_row({ th: 'Preferred Name' }, { td: "01. ENVIRONMENT [domain]" }) + table.add_row({ th: 'Type' }, { td: "http://www.w3.org/2004/02/skos/core#Concept" }) + end + end + end +end diff --git a/test/components/previews/display/alert_component_preview.rb b/test/components/previews/display/alert_component_preview.rb new file mode 100644 index 0000000000..9b9d355a69 --- /dev/null +++ b/test/components/previews/display/alert_component_preview.rb @@ -0,0 +1,34 @@ +class Display::AlertComponentPreview < ViewComponent::Preview + + #@param message text + #@param closable select [true, false] + def default(message: "New ontology Bioinformatics Ontology v2.0 has been uploaded. Check it out in the latest uploads section", closable: true) + render Display::AlertComponent.new(message: message, closable: closable) + end + + #@param message text + #@param closable select [true, false] + def danger(message: "Unable to delete ontology Chemistry Concepts Ontology. This ontology is associated with existing mappings. Please remove mappings before deleting", closable: true) + render Display::AlertComponent.new(message: message, closable: closable, type: "danger") + end + + #@param message text + #@param closable select [true, false] + def warning(message: "This ontology version is outdated and may contain inaccuracies. Consider using the latest version for accurate information", closable: true) + render Display::AlertComponent.new(message: message, closable: closable, type: "warning") + end + + #@param message text + #@param closable select [true, false] + def success(message: "Your ontology submission has been successfully uploaded and is now under review. You will receive an email confirmation shortly", closable: true) + render Display::AlertComponent.new(message: message, closable: closable, type: "success") + end + + + #@param message text + #@param delay number + def auto_close(message: "Your ontology submission has been successfully uploaded and is now under review. You will receive an email confirmation shortly", delay: 3000) + render Display::AlertComponent.new(message: message, closable: true, auto_close_delay: delay, type: "default") + end + +end \ No newline at end of file diff --git a/test/components/previews/display/circle_progress_bar_component_preview.rb b/test/components/previews/display/circle_progress_bar_component_preview.rb new file mode 100644 index 0000000000..f226774376 --- /dev/null +++ b/test/components/previews/display/circle_progress_bar_component_preview.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class Display::CircleProgressBarComponentPreview < ViewComponent::Preview + + # @param count number + # @param max number + def default(count: 63, max: 100) + render CircleProgressBarComponent.new(count: count, max: max) + end +end diff --git a/test/components/previews/display/date_time_field_component_preview.rb b/test/components/previews/display/date_time_field_component_preview.rb new file mode 100644 index 0000000000..04071bc8c8 --- /dev/null +++ b/test/components/previews/display/date_time_field_component_preview.rb @@ -0,0 +1,9 @@ +class Display::DateTimeFieldComponentPreview < ViewComponent::Preview + + # @param text text + # @param format select [year_month_day_concise, month_day_year, monthfull_day_year] + def default(text: "2022-10-01", format: 'monthfull_day_year') + render DateTimeFieldComponent.new(value: text, format: format.to_sym) + end + +end \ No newline at end of file diff --git a/test/components/previews/display/field_container_component_preview.rb b/test/components/previews/display/field_container_component_preview.rb new file mode 100644 index 0000000000..0f04e8222c --- /dev/null +++ b/test/components/previews/display/field_container_component_preview.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class Display::FieldContainerComponentPreview < ViewComponent::Preview + + # @param label text + # @param value text + # + def default(label: 'label' , value: 'value') + render FieldContainerComponent.new(label: label , value: value) + end +end diff --git a/test/components/previews/display/header_component_preview.rb b/test/components/previews/display/header_component_preview.rb new file mode 100644 index 0000000000..4911908968 --- /dev/null +++ b/test/components/previews/display/header_component_preview.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class Display::HeaderComponentPreview < ViewComponent::Preview + + # @param text text + # @param tooltip text + def default(text: 'header text' , tooltip: 'text tooltip') + render Display::HeaderComponent.new(text: text, tooltip: tooltip) + end +end diff --git a/test/components/previews/display/image_component_preview.rb b/test/components/previews/display/image_component_preview.rb new file mode 100644 index 0000000000..d6caa1f9a8 --- /dev/null +++ b/test/components/previews/display/image_component_preview.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class Display::ImageComponentPreview < ViewComponent::Preview + def default + render Display::ImageComponent.new(src: "empty-box.svg", title: 'Image popup') + end +end diff --git a/test/components/previews/display/info_tooltip_component_preview.rb b/test/components/previews/display/info_tooltip_component_preview.rb new file mode 100644 index 0000000000..44f8449721 --- /dev/null +++ b/test/components/previews/display/info_tooltip_component_preview.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Display::InfoTooltipComponentPreview < ViewComponent::Preview + + # @param text text + def default(text: 'tooltip text') + render Display::InfoTooltipComponent.new(text: text) + end +end diff --git a/test/components/previews/display/language_field_component_preview.rb b/test/components/previews/display/language_field_component_preview.rb new file mode 100644 index 0000000000..29cd56d3ac --- /dev/null +++ b/test/components/previews/display/language_field_component_preview.rb @@ -0,0 +1,8 @@ +class Display::LanguageFieldComponentPreview < ViewComponent::Preview + + # @param value text + def default(value: 'fr') + render LanguageFieldComponent.new(value: value) + end + +end \ No newline at end of file diff --git a/test/components/previews/display/license_field_component_preview.rb b/test/components/previews/display/license_field_component_preview.rb new file mode 100644 index 0000000000..203318a0b5 --- /dev/null +++ b/test/components/previews/display/license_field_component_preview.rb @@ -0,0 +1,8 @@ +class Display::LicenseFieldComponentPreview < ViewComponent::Preview + + # @param value select [ CC-BY IGO 3.0, https://creativecommons.org/licenses/by/4.0/, http://www.gnu.org/licenses/gpl-3.0, https://opensource.org/licenses/MIT, http://www.apache.org/licenses/LICENSE-2.0 ] + def default(value: "https://creativecommons.org/licenses/by/4.0/") + render LicenseFieldComponent.new(value: value) + end + +end \ No newline at end of file diff --git a/test/components/previews/display/link_field_component_preview.rb b/test/components/previews/display/link_field_component_preview.rb new file mode 100644 index 0000000000..3b6d3a85a5 --- /dev/null +++ b/test/components/previews/display/link_field_component_preview.rb @@ -0,0 +1,8 @@ +class Display::LinkFieldComponentPreview < ViewComponent::Preview + + # @param text text + def default(text: "https://agroportal.lirmm.fr/") + render LinkFieldComponent.new(value: text) + end + +end \ No newline at end of file diff --git a/test/components/previews/display/link_text_component_preview.rb b/test/components/previews/display/link_text_component_preview.rb new file mode 100644 index 0000000000..d041c5c95f --- /dev/null +++ b/test/components/previews/display/link_text_component_preview.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +class Display::LinkTextComponentPreview < ViewComponent::Preview + + # @param text text + # @param icon text + def default(text: 'link text', icon: '') + render ChipButtonComponent.new(text: LinkTextComponent.new(text: text, icon: icon).call, type: 'clickable') + end + + # @param text text + def internal(text: 'redirect inside the site') + render ChipButtonComponent.new(text: InternalLinkTextComponent.new(text: text).call, type: 'clickable') + end + + # @param text text + def external(text: 'go out of the site') + render ChipButtonComponent.new(text: ExternalLinkTextComponent.new(text: text).call, type: 'clickable') + end + + # @param text text + def popup(text: 'open popup') + render ChipButtonComponent.new(text: PopupLinkTextComponent.new(text: text).call, type: 'clickable') + end +end diff --git a/test/components/previews/display/text_area_field_component_preview.rb b/test/components/previews/display/text_area_field_component_preview.rb new file mode 100644 index 0000000000..efa508ab23 --- /dev/null +++ b/test/components/previews/display/text_area_field_component_preview.rb @@ -0,0 +1,13 @@ +class Display::TextAreaFieldComponentPreview < ViewComponent::Preview + + + # @param value textarea + def default(value: '') + render TextAreaFieldComponent.new(value: value.empty? ? (long_text + long_text) : value ) + end + + private + def long_text + "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum." + end +end \ No newline at end of file diff --git a/test/components/previews/input/chips_component_preview.rb b/test/components/previews/input/chips_component_preview.rb new file mode 100644 index 0000000000..76e10ec283 --- /dev/null +++ b/test/components/previews/input/chips_component_preview.rb @@ -0,0 +1,10 @@ +class Input::ChipsComponentPreview < ViewComponent::Preview + + # @param name text + # @param value text + + def default(name: "name", value: "value") + render(ChipsComponent.new(name: name, value: value)) + end + +end \ No newline at end of file diff --git a/test/components/previews/input/input_field_component_preview.rb b/test/components/previews/input/input_field_component_preview.rb new file mode 100644 index 0000000000..dafe178b9d --- /dev/null +++ b/test/components/previews/input/input_field_component_preview.rb @@ -0,0 +1,94 @@ +# frozen_string_literal: true + +class Input::InputFieldComponentPreview < ViewComponent::Preview + + # This is a date input field: + # - To use it without a label: don't give a value to the param label or leave it empty. + # - To put it in error state: define the param error_message with the error message you want to be displayed. + # - To give it a helper text (a text displayed under the input field): define the param helper_text with the helper text you want to be displayed. + # @param label text + # @param error_message text + # @param helper_text text + + def date(label: "Label", placeholder: "", error_message: "", helper_text: "") + render Input::DateComponent.new(label: label, name: "name", placeholder: placeholder, error_message: error_message, helper_text: helper_text) + end + + + # This is a url input field: + # - To use it without a label: don't give a value to the param label or leave it empty. + # - To put it in error state: define the param error_message with the error message you want to be displayed. + # - To give it a helper text (a text displayed under the input field): define the param helper_text with the helper text you want to be displayed. + # @param label text + # @param error_message text + # @param helper_text text + + def email(label: "Label", placeholder: "", error_message: "", helper_text: "") + render Input::EmailComponent.new(label: label, name: "name", placeholder: placeholder, error_message: error_message, helper_text: helper_text) + end + + + def file + render Input::FileInputComponent.new(name: "file") + end + + + # This is a url input field: + # - To use it without a label: don't give a value to the param label or leave it empty. + # - To put it in error state: define the param error_message with the error message you want to be displayed. + # - To give it a helper text (a text displayed under the input field): define the param helper_text with the helper text you want to be displayed. + # @param label text + # @param error_message text + # @param helper_text text + + def password(label: "Label", placeholder: "", error_message: "", helper_text: "") + render Input::PasswordComponent.new(label: label, name: "name", placeholder: placeholder, error_message: error_message, helper_text: helper_text) + end + + + # This is a url input field: + # - To use it without a label: don't give a value to the param label or leave it empty. + # - To put it in error state: define the param error_message with the error message you want to be displayed. + # - To give it a helper text (a text displayed under the input field): define the param helper_text with the helper text you want to be displayed. + # @param label text + # @param error_message text + # @param helper_text text + + def url(label: "Label", placeholder: "", error_message: "", helper_text: "") + render Input::UrlComponent.new(label: label, name: "name", placeholder: placeholder, error_message: error_message, helper_text: helper_text) + end + + # This is a text input field: + # - To use it without a label: don't give a value to the param label or leave it empty. + # - To give it a hint (placeholder): define the param hint with the hind you want to be displayed. + # - To put it in error state: define the param error_message with the error message you want to be displayed. + # - To give it a helper text (a text displayed under the input field): define the param helper_text with the helper text you want to be displayed. + # @param label text + # @param placeholder text + # @param error_message text + # @param helper_text text + + def text(label: "Label", placeholder: "", error_message: "", helper_text: "") + render Input::TextInputComponent.new(label: label, name: "name", placeholder: placeholder, error_message: error_message, helper_text: helper_text) + end + + # This is a textarea field: + # - To use it without a label: don't give a value to the param label or leave it empty. + # - To give it a hint (placeholder): define the param hint with the hind you want to be displayed. + # - To put it in error state: define the param error_message with the error message you want to be displayed. + # - To give it a helper text (a text displayed under the input field): define the param helper_text with the helper text you want to be displayed. + + # @param label text + # @param placeholder text + # @param error_message text + # @param helper_text text + # @param rows number + + def text_area(label: "Label", placeholder: "", error_message: "", helper_text: "", rows: 5) + render Input::TextAreaComponent.new(label: label, name: "name",value: '', placeholder: placeholder, error_message: error_message, helper_text: helper_text, rows: rows) + end + + def language_input + render Input::LanguageSelectorComponent.new(languages: {fr: 'French', en: 'English'}) + end +end diff --git a/test/components/previews/input/nested_form_input_component_preview.rb b/test/components/previews/input/nested_form_input_component_preview.rb new file mode 100644 index 0000000000..ec9329466c --- /dev/null +++ b/test/components/previews/input/nested_form_input_component_preview.rb @@ -0,0 +1,18 @@ +class Input::NestedFormInputComponentPreview < ViewComponent::Preview + + include ActionView::Helpers::TagHelper + include ActionView::Helpers::FormTagHelper + + # @param object_name text + def default(object_name: 'contact') + render NestedFormInputsComponent.new(object_name: object_name) do |c| + c.header do + content_tag(:div, 'Contact name', class: 'w-50 mx-1') + content_tag(:div, 'Contact email', class: 'w-50 mx-1') + end + + c.template do + raw "
    ".html_safe + end + end + end +end \ No newline at end of file diff --git a/test/components/previews/input/select_component_preview.rb b/test/components/previews/input/select_component_preview.rb new file mode 100644 index 0000000000..851712b2df --- /dev/null +++ b/test/components/previews/input/select_component_preview.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +class Input::SelectComponentPreview < ViewComponent::Preview + layout 'component_preview_not_centred' + + def default(id: "", name: "", values: ["choices 1", "choices 2", "choices 3"], selected: "choices 2", multiple: false, open_to_add_values: false) + render Input::SelectComponent.new(id: id, name: name, value: values, selected: selected, multiple: multiple, open_to_add_values: open_to_add_values) + end + + def multiple(id: "", name: "", values: ["choices 1", "choices 2", "choices 3"], selected: "choices 2", multiple: true, open_to_add_values: false) + render Input::SelectComponent.new(id: id, name: name, value: values, selected: selected, multiple: multiple, open_to_add_values: open_to_add_values) + end + + def open_to_add(id: "", name: "", values: ["choices 1", "choices 2", "choices 3"], selected: "choices 2", multiple: true, open_to_add_values: true) + render Input::SelectComponent.new(id: id, name: name, value: values, selected: selected, multiple: multiple, open_to_add_values: open_to_add_values) + end + + def with_icon + values = [ + ['', ''], + ["FR", 'fr'], + ["EN", 'en'] + ] + render SelectInputComponent.new(id: 'id', name: 'name', values: values, placeholder: 'Choose a language') + end + +end diff --git a/test/components/previews/input/switch_input_component_preview.rb b/test/components/previews/input/switch_input_component_preview.rb new file mode 100644 index 0000000000..fd40bd6aeb --- /dev/null +++ b/test/components/previews/input/switch_input_component_preview.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class Input::SwitchInputComponentPreview < ViewComponent::Preview + + # @param label text + def default(label: 'Label') + render SwitchInputComponent.new(id: 'id', name: 'selected_metadata[]', value: '', label: label) + end +end diff --git a/test/components/previews/layout/card_component_preview.rb b/test/components/previews/layout/card_component_preview.rb new file mode 100644 index 0000000000..23f07a2d87 --- /dev/null +++ b/test/components/previews/layout/card_component_preview.rb @@ -0,0 +1,10 @@ +# frozen_string_literal: true + +class Layout::CardComponentPreview < ViewComponent::Preview + # @param text textarea + def default(text: 'text here') + render Layout::CardComponent.new do + text.html_safe + end + end +end diff --git a/test/components/previews/layout/card_message_component_preview.rb b/test/components/previews/layout/card_message_component_preview.rb new file mode 100644 index 0000000000..4b28bf40ff --- /dev/null +++ b/test/components/previews/layout/card_message_component_preview.rb @@ -0,0 +1,30 @@ +class Layout::CardMessageComponentPreview < ViewComponent::Preview + + # @param message text + # @param button_text text + # @param button_link text + + def default(message: "Here we can type a success or failure message to the user", button_text: "Do action", button_link: "/" ) + render(CardMessageComponent.new(message: message, button_text: button_text, type: "success", button_link: button_link)) + end + + + # @param message text + # @param button_text text + # @param button_link text + + def warning(message: "Here we can type a success or failure message to the user", button_text: "Do action", button_link: "/" ) + render(CardMessageComponent.new(message: message, button_text: button_text, type: "warning", button_link: button_link)) + end + + + # @param message text + # @param button_text text + # @param button_link text + + def failure(message: "Here we can type a success or failure message to the user", button_text: "Do action", button_link: "/" ) + render(CardMessageComponent.new(message: message, button_text: button_text, type: "failure", button_link: button_link)) + end + + +end \ No newline at end of file diff --git a/test/components/previews/layout/dropdown_container_component_preview.rb b/test/components/previews/layout/dropdown_container_component_preview.rb new file mode 100644 index 0000000000..7d66eb5dfc --- /dev/null +++ b/test/components/previews/layout/dropdown_container_component_preview.rb @@ -0,0 +1,15 @@ +# frozen_string_literal: true + +class Layout::DropdownContainerComponentPreview < ViewComponent::Preview + layout 'component_preview_not_centred' + + # @param title text + # @param content textarea + + def default(title: 'title', content: 'content') + render DropdownContainerComponent.new(id: 'id' , title: title) do + content.html_safe + end + end + +end diff --git a/test/components/previews/layout/list_component_preview.rb b/test/components/previews/layout/list_component_preview.rb new file mode 100644 index 0000000000..ea57e58368 --- /dev/null +++ b/test/components/previews/layout/list_component_preview.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class Layout::ListComponentPreview < ViewComponent::Preview + def vertical + render Layout::ListComponent.new do |l| + 4.times.each do |i| + l.row {content_tag(:div , "element #{i}", class: 'p-1 border')} + end + end + end + + def horizontal + render Layout::HorizontalListComponent.new do |l| + 4.times.each do |i| + l.element {content_tag(:div , "element #{i}", class: 'p-1 border')} + end + end + end +end diff --git a/test/components/previews/layout/progress_pages_component_preview.rb b/test/components/previews/layout/progress_pages_component_preview.rb new file mode 100644 index 0000000000..afb6596de1 --- /dev/null +++ b/test/components/previews/layout/progress_pages_component_preview.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +class Layout::ProgressPagesComponentPreview < ViewComponent::Preview + + # @param pages_count number + def default(pages_count: 5) + render Layout::ProgressPagesComponent.new(pages_title: (pages_count || 0).times.map { |x| "page #{x}" }) do |c| + 5.times.each { |i| c.page { content_tag(:div, "page #{i}", class: "p-5 mx-5 text-center", style: 'width: 500px') } } + end + end +end diff --git a/test/components/previews/layout/summary_section_component_preview.rb b/test/components/previews/layout/summary_section_component_preview.rb new file mode 100644 index 0000000000..626770b14a --- /dev/null +++ b/test/components/previews/layout/summary_section_component_preview.rb @@ -0,0 +1,14 @@ +class Layout::SummarySectionComponentPreview < ViewComponent::Preview + layout 'component_preview_not_centred' + # @param title text + # @param content textarea + # @param link url + # @param link_title text + # @param show_card toggle + def default(title: 'title' , link: nil, link_title: nil, show_card: true, content: 'here is the content') + render SummarySectionComponent.new(title: title , link: link, link_title: link_title, show_card: show_card) do + content.html_safe + end + end + +end \ No newline at end of file diff --git a/test/components/previews/layout/table_component_preview.rb b/test/components/previews/layout/table_component_preview.rb new file mode 100644 index 0000000000..b38a7cd0fc --- /dev/null +++ b/test/components/previews/layout/table_component_preview.rb @@ -0,0 +1,45 @@ +# frozen_string_literal: true + +class Layout::TableComponentPreview < ViewComponent::Preview + + include ActionView::Helpers::UrlHelper + + def default + render TableComponent.new do |t| + table_content(t) + end + end + + def stripped + render TableComponent.new(stripped: true) do |t| + table_content(t) + end + end + + private + + def table_content(t) + headers = 5.times.map { |i| "header #{i}" } + rows = 6.times.map { |row| 5.times.map { |i| "line #{row} :#{i} " } } + + t.header do |h| + headers.each do |header| + h.th { header } + end + h.th { 'Action' } + end + + rows.each do |row| + t.row do |r| + row.each do |col| + r.td { col } + end + + r.td do + link_to('Edit', '', class: 'mr-3') + link_to('Delete', '') + end + end + end + + end +end diff --git a/test/components/previews/layout/tabs_container_component_preview.rb b/test/components/previews/layout/tabs_container_component_preview.rb new file mode 100644 index 0000000000..b82e09f32a --- /dev/null +++ b/test/components/previews/layout/tabs_container_component_preview.rb @@ -0,0 +1,78 @@ +class Layout::TabsContainerComponentPreview < ViewComponent::Preview + + + def default + render TabsContainerComponent.new do |c| + sections = ['section 1', 'section 2', 'section 3', 'section 4'] + + sections.each do |section_title| + c.item(title: section_title, + path: "#{section_title}path", + selected: section_title.eql?('section 2'), + page_name: "#{section_title}path") + + c.item_content do + section_title + end + end + + end + end + + def pill + render TabsContainerComponent.new(type: 'pill') do |c| + sections = ['section 1', 'section 2', 'section 3', 'section 4'] + + sections.each do |section_title| + c.item(title: section_title, + path: "#{section_title}path", + selected: section_title.eql?('section 2'), + page_name: "#{section_title}path") + + c.item_content do + section_title + end + end + + end + end + + def outline + render TabsContainerComponent.new(type: 'outline') do |c| + sections = ['section 1', 'section 2', 'section 3', 'section 4'] + + sections.each do |section_title| + c.item(title: section_title, + path: "#{section_title}path", + selected: section_title.eql?('section 2'), + page_name: "#{section_title}path") + + c.item_content do + section_title + end + end + + end + end + + def with_action_links + render TabsContainerComponent.new do |c| + sections = ['section 1', 'section 2', 'section 3', 'section 4'] + + sections.each do |section_title| + c.item(title: section_title, + path: "#{section_title}path", + selected: section_title.eql?('section 2'), + page_name: "#{section_title}path") + + c.item_content do + section_title + end + end + c.pinned_right do + RoundedButtonComponent.new(icon: 'check.svg').render_in(c) + ''.html_safe + RoundedButtonComponent.new.render_in(c) + end + end + end + +end \ No newline at end of file diff --git a/test/components/previews/layout/turbo_modal_component_preview.rb b/test/components/previews/layout/turbo_modal_component_preview.rb new file mode 100644 index 0000000000..bf976326d8 --- /dev/null +++ b/test/components/previews/layout/turbo_modal_component_preview.rb @@ -0,0 +1,16 @@ +# frozen_string_literal: true + +class Layout::TurboModalComponentPreview < ViewComponent::Preview + layout 'component_preview_not_centred' + + include ActionView::Helpers::TagHelper + include ActionView::Context + + # @param title text + # @param message text + def default(message: 'hello you !', title: 'title') + render TurboModalComponent.new(title: title, show: true) do + content_tag(:div, message, class: 'p-5') + end + end +end diff --git a/test/components/previews/loader_component_preview.rb b/test/components/previews/loader_component_preview.rb new file mode 100644 index 0000000000..78e55ca336 --- /dev/null +++ b/test/components/previews/loader_component_preview.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true + +class LoaderComponentPreview < ViewComponent::Preview + def default + render LoaderComponent.new + end + + def small + render LoaderComponent.new(small: true) + end + +end diff --git a/test/components/previews/notification_component_preview.rb b/test/components/previews/notification_component_preview.rb new file mode 100644 index 0000000000..407c0d947c --- /dev/null +++ b/test/components/previews/notification_component_preview.rb @@ -0,0 +1,12 @@ +class NotificationComponentPreview < ViewComponent::Preview + + # @param title text + # @param message text + # @param type select [success, alert, error] + # @param auto_remove toggle + + def default(title: "Notification message", message: "Here we can type a success or failure message to the user", type: 'success', auto_remove: false) + render NotificationComponent.new(title: title, comment: message, type: type, auto_remove: auto_remove) + end + +end \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index c90a58e5c8..a16ad8d214 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25,6 +25,18 @@ resolved "https://registry.yarnpkg.com/@hotwired/turbo/-/turbo-7.3.0.tgz#2226000fff1aabda9fd9587474565c9929dbf15d" integrity sha512-Dcu+NaSvHLT7EjrDrkEmH4qET2ZJZ5IcCWmNXxNQTBwlnE5tBZfN6WxZ842n5cHV52DH/AKNirbPBtcEXDLW4g== +"@orchidjs/sifter@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@orchidjs/sifter/-/sifter-1.0.3.tgz#43f42519472282eb632d0a1589184f044d64129b" + integrity sha512-zCZbwKegHytfsPm8Amcfh7v/4vHqTAaOu6xFswBYcn8nznBOuseu6COB2ON7ez0tFV0mKL0nRNnCiZZA+lU9/g== + dependencies: + "@orchidjs/unicode-variants" "^1.0.4" + +"@orchidjs/unicode-variants@^1.0.4": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@orchidjs/unicode-variants/-/unicode-variants-1.0.4.tgz#6d2f812e3b19545bba2d81caffff1204de9a6a58" + integrity sha512-NvVBRnZNE+dugiXERFsET1JlKZfM5lJDEpSMilKW4bToYJ7pxf0Zne78xyXB2ny2c2aHfJ6WLnz1AaTNHAmQeQ== + "@rails/actioncable@^7.0": version "7.0.4" resolved "https://registry.yarnpkg.com/@rails/actioncable/-/actioncable-7.0.4.tgz#70a3ca56809f7aaabb80af2f9c01ae51e1a8ed41" @@ -178,3 +190,16 @@ stimulus-rails-nested-form@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/stimulus-rails-nested-form/-/stimulus-rails-nested-form-4.1.0.tgz#bfce185cff908170a4eb9973875b72517c3bc83a" integrity sha512-ORqcTsg3sa4PGFEyUkbvcPG56F4K2fx1qJCUQIgngO1GaW5taKcvDkT0HvdTqtQAFe/1lN4CpJAqoSCt+nYF/Q== + +stimulus-read-more@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/stimulus-read-more/-/stimulus-read-more-4.1.0.tgz#f34efb2dcb33fd091936d84c569937bc100506c8" + integrity sha512-SJyCJqZrhDSKpfrepnhStBaxtyv6Jnvr+b84GDg3l+/BzL5HaFLYmc6QkSNCeR6y0x+Zw7lwKuzv+XzyAm1KzQ== + +tom-select@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tom-select/-/tom-select-2.2.2.tgz#8e5f9296e6d80254feccb57f0986bd6c44d126e2" + integrity sha512-igGah1yY6yhrnN2h/Ky8I5muw/nE/YQxIsEZoYu5qaA4bsRibvKto3s8QZZosKpOd0uO8fNYhRfAwgHB4IAYew== + dependencies: + "@orchidjs/sifter" "^1.0.3" + "@orchidjs/unicode-variants" "^1.0.4"