Skip to content

Commit

Permalink
Merge pull request #45 from ahornos/main
Browse files Browse the repository at this point in the history
BioHackathon 2022 technical content addition
  • Loading branch information
M-casado authored May 15, 2023
2 parents ff83c31 + 85a7791 commit de2d87f
Show file tree
Hide file tree
Showing 11 changed files with 1,089 additions and 1 deletion.
30 changes: 30 additions & 0 deletions CONTRIBUTORS.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,33 @@ silviabah:
email: [email protected]
orcid: 0000-0002-2734-0449
elixir_node: embl

ahornos:
name: Albert Hornos Vidal
email: [email protected]
orcid: 0000-0002-7330-668X
elixir_node: es

blankdots:
name: Stefan Negru
email:
orcid:
elixir_node: fi

alex-dem:
name: Alexandros Dimopoulos
email: [email protected]
orcid: 0000-0002-4602-2040
elixir_node: gr

d-salgado:
name: David Salgado
email: [email protected]
orcid: 0000-0002-5905-3591
elixir_node: fr

lilachic:
name: Liisa Lado-Villar
email: [email protected]
orcid:
elixir_node: fi
89 changes: 89 additions & 0 deletions docs/search.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
---
layout: base
title: Search
nav_exclude: true
search_exclude: true
---

<h1 id="search">Search Results</h1>

<div id="search-results" class="search-results">
Enter a search query in the search box on the left.
</div>

<!-- We only need to load the search dependencies in this page. -->
<script src="https://unpkg.com/lunr/lunr.js"></script>
<script type="text/javascript">
"use strict";

// First we figure out if there is a search query and show a "searching..." animation
var getQueryVariable = function(variable) {
var query = window.location.search.substring(1);
var vars = query.split('&');
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split('=');
if (pair[0] === variable) {
return decodeURIComponent(pair[1].replace(/\+/g, '%20'));
}
}
};
var searchResults = document.getElementById('search-results');
var searchQuery = getQueryVariable('q');
var dotAnimation = null;
if (searchQuery) {
document.getElementById('search-query').setAttribute('value', searchQuery);
var dotsCount = 0;
dotAnimation = setInterval(function() {
dotsCount++;
var dots = new Array(dotsCount % 5).join('.');
searchResults.innerHTML = '<li>Searching' + dots + '</li>';
}, 500);
}

// Then we perform the search on page load
window.addEventListener('load', function() {
var displaySearchResults = function(results, store) {
clearInterval(dotAnimation);
if (results.length) {
var appendString = '';
for (var i = 0; i < results.length; i++) {
var item = store[results[i].ref];
appendString += '<li><a href="' + item.url + '"><h3>' + item.title + '</h3></a>';
appendString += '<p>' + item.content.substring(0, 150) + '...</p></li>';
}
searchResults.innerHTML = appendString;
} else {
searchResults.innerHTML = '<li>Your search did not match any documents. Please make sure that all words are spelled correctly and that you\'ve selected enough categories.</li>';
}
};

if (searchQuery) {
var idx = lunr(function() {
this.field('id');
this.field('title', { boost: 10 });
this.field('author');
this.field('content');
});
$.getJSON('/search_data.json').then(function(search_data) {
var idx = lunr(function() {
this.field('id');
this.field('title', { boost: 10 });
this.field('author');
this.field('content');

for (var key in search_data) {
this.add({
'id': key,
'title': search_data[key].title,
'author': search_data[key].author,
'content': search_data[key].content
});
}
});

var results = idx.search(searchQuery);
displaySearchResults(results, search_data);
});
}
});
</script>
32 changes: 32 additions & 0 deletions docs/search_data.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
---
layout: null
nav_exclude: true
search_exclude: true
---
{
{%- for site_page in site.pages %}
{%- unless site_page.search_exclude == true %}
"{{ site_page.url | slugify }}": {
"title": "{{ site_page.title | xml_escape }}",
"content": {{site_page.content | markdownify | newline_to_br | replace: '<br />', ' ' | strip_html | normalize_whitespace | jsonify }},
"url": " {{ site_page.url | xml_escape }}",
"author": "{{ site_page.author | xml_escape }}"
},
{%- endunless %}
{%- endfor %}
{%- for site_post in site.posts %}
{%- unless site_page.search_exclude == true %}
"{{ site_post.url | slugify }}": {
"title": "{{ site_post.title | xml_escape }}",
"content": {{site_post.content | markdownify | newline_to_br | replace: '<br />', ' ' | strip_html | normalize_whitespace | jsonify }},
"url": " {{ site_post.url | xml_escape }}",
"author": "{{ site_post.author | xml_escape }}"
}{%- unless forloop.last %},{%- endunless %}
{%- endunless %}
{%- else %}
{%- comment %} Dirty trick: There is a comma at the end of the sites loop, so we need at least one entry after {% endcomment %}
".": {
".": "."
}
{%- endfor %}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
<table class="tg">
<colgroup>
<col style="width: 34px">
<col style="width: 133px">
<col style="width: 304px">
<col style="width: 122px">
<col style="width: 56px">
</colgroup>
<thead>
<tr>
<th class="tg-center-bold"><b>#</b></th>
<th class="tg-left" ><b>Component</b></th>
<th class="tg-left"><b>Description</b></th>
<th class="tg-center"><b>Required</b></th>
<th class="tg-center" nowrap><b>Link to</b></th>
</tr>
</thead>
<tbody>
<tr>
<td class="tg-center">1</td>
<td class="tg-left"><b>URL</b></td>
<td class="tg-left">Official website for documentation</td>
<td class="tg-center">-</td>
<td class="tg-center"></td>
</tr>
<tr>
<td class="tg-center">2</td>
<td class="tg-left"><b>Credentials</b></td>
<td class="tg-left">For connecting to Central EGA there are 2 types of credentials required: <br>User API for identifying and validating in Submitter Inbox the cEGA accounts<br>cEGA MQ credentials for connecting FEGA Node MQ</td>
<td class="tg-center">Y</td>
<td class="tg-center"></td>
</tr>
<tr>
<td class="tg-center">3</td>
<td class="tg-left"><b>FEGA Node Encryption key pair</b></td>
<td class="tg-left">A Crypt4GH key pair generated by the FEGA Node, and the public is shared with the Submitter so that files are sent encrypted for the FEGA Node</td>
<td class="tg-center">Y</td>
<td class="tg-center"></td>
</tr>
<tr>
<td class="tg-center">4</td>
<td class="tg-left"><b>FEGA Node MQ</b></td>
<td class="tg-left">RabbitMQ which is connected in shovel and federation mechanism with the cEGA MQ</td>
<td class="tg-center">Y</td>
<td class="tg-center">2</td>
</tr>
<tr>
<td class="tg-center">5</td>
<td class="tg-left"><b>Submitter Inbox</b></td>
<td class="tg-left">An Inbox solution for the Researcher to submit files to a specific Node (e.g. SFTP, REST API).<br>The Inbox needs to be accessible by a Researcher via an URL.</td>
<td class="tg-center">Y</td>
<td class="tg-center">2, 3</td>
</tr>
<tr>
<td class="tg-center">6</td>
<td class="tg-left"><b>Ingest Pipeline</b></td>
<td class="tg-left">Means of interfacing with the cEGA so that the required messages are being sent at relevant steps of the submission process. https://localega.readthedocs.io/en/latest/amqp.html </td>
<td class="tg-center">Y</td>
<td class="tg-center">4, 7, 8, 9</td>
</tr>
<tr>
<td class="tg-center">7</td>
<td class="tg-left"><b>Archive storage</b></td>
<td class="tg-left">Storage solution for storing archived files. e.g. S3, POSIX etc.</td>
<td class="tg-center">Y</td>
<td class="tg-center">6</td>
</tr>
<tr>
<td class="tg-center">8</td>
<td class="tg-left"><b>Archive File Database</b></td>
<td class="tg-left">Means of storing information about the archived files and their AccessionIDs and dataset IDs mapping to AccessionIDs (file to dataset mapping).<br>Note: other details can be stored in the database e.g. checksums, timestamps, headers of crypt4gh file etc.</td>
<td class="tg-center">Y</td>
<td class="tg-center">6</td>
</tr>
<tr>
<td class="tg-center">9</td>
<td class="tg-left"><b>Backup Storage</b></td>
<td class="tg-left">Storage solution for storing a backup of the archived files. e.g. S3, POSIX etc.<br>Note: A file needs to be backed up in a different location than the Archive</td>
<td class="tg-center">Y</td>
<td class="tg-center">6</td>
</tr>
<tr>
<td class="tg-center">10</td>
<td class="tg-left"><b>Main Source Code Repository</b></td>
<td class="tg-left">Where the source code can be found</td>
<td class="tg-center">N</td>
<td class="tg-center"></td>
</tr>
<tr>
<td class="tg-center">11</td>
<td class="tg-left"><b>Main Programming Language</b></td>
<td class="tg-left">Main programming language for the technical stack pipeline</td>
<td class="tg-center">-</td>
<td class="tg-center"></td>
</tr>
<tr>
<td class="tg-center">12</td>
<td class="tg-left"><b>Deployment Method</b></td>
<td class="tg-left">Means which technology is used to put in production different components</td>
<td class="tg-center">-</td>
<td class="tg-center"></td>
</tr>
<tr>
<td class="tg-center">13</td>
<td class="tg-left"><b>Helpdesk Management System</b></td>
<td class="tg-left">Main tool for user/helpdesk communication</td>
<td class="tg-center">N</td>
<td class="tg-center"></td>
</tr>
<tr>
<td class="tg-center">14</td>
<td class="tg-left"><b>Helpdesk Portal Technology</b></td>
<td class="tg-left">Federated EGA node helpedesk will provide means of interacting with submitter, registering DPA, establisng DACs and monitoring submissions.</td>
<td class="tg-center">N</td>
<td class="tg-center">15</td>
</tr>
<tr>
<td class="tg-center">15</td>
<td class="tg-left"><b>Monitoring Tool</b></td>
<td class="tg-left">Means of providing an overview of the status of submissions.<br>Good also for auditing purposes.</td>
<td class="tg-center">N</td>
<td class="tg-center">14</td>
</tr>
<tr>
<td class="tg-center">16</td>
<td class="tg-left"><b>Metadata Submission Method</b></td>
<td class="tg-left">Means how the researchers will send the metadata to Central EGA through a cEGA submitter portal, node portal or another solution</td>
<td class="tg-center">Y</td>
<td class="tg-center"></td>
</tr>
<tr>
<td class="tg-center">17</td>
<td class="tg-left"><b>Download Solution</b></td>
<td class="tg-left">Means for a Requester to access the data once approval has been granted.</td>
<td class="tg-center">Y</td>
<td class="tg-center">7, 8, 18</td>
</tr>
<tr>
<td class="tg-center">18</td>
<td class="tg-left"><b>Data Access Tool</b></td>
<td class="tg-left">Means of enabling Requesters to Download the archived data.<br>tool for facilitating DACs</td>
<td class="tg-center">N</td>
<td class="tg-center"></td>
</tr>
<tr>
<td class="tg-center">19</td>
<td class="tg-left"><b>General Contact</b></td>
<td class="tg-left">Email or website to contact the team deploying the solution</td>
<td class="tg-center">Y</td>
<td class="tg-center"></td>
</tr>
</tbody>
</table>
Loading

0 comments on commit de2d87f

Please sign in to comment.