Commit a9f07305 authored by flothoni's avatar flothoni

Merge branch 'dev' of gitlab.inria.fr:vidjil/vidjil into...

Merge branch 'dev' of gitlab.inria.fr:vidjil/vidjil into feature-c/4014-clones-selectionnable-even-if-disable
parents 1e9c31ec f6bb6e74
Pipeline #188613 failed with stages
in 21 minutes and 8 seconds
...@@ -51,12 +51,13 @@ test_germlines: ...@@ -51,12 +51,13 @@ test_germlines:
- /^feature-.*g.*\/.*$/ - /^feature-.*g.*\/.*$/
- schedules - schedules
# Doc # Includes
include: include:
- local: '/doc/.gitlab-ci.yml' - local: '/doc/.gitlab-ci.yml' # Doc
- local: 'algo/.gitlab-ci-compilers.yml' # Stage multiple_tests - local: 'algo/.gitlab-ci-compilers.yml' # Stage multiple_tests
- local: 'algo/.gitlab-ci.yml' # Vidjil-algo pipelines - local: 'algo/.gitlab-ci.yml' # Vidjil-algo pipelines
- template: Code-Quality.gitlab-ci.yml # Code quality
# Algorithm # Algorithm
...@@ -188,6 +189,7 @@ test_browser_unit: ...@@ -188,6 +189,7 @@ test_browser_unit:
artifacts: artifacts:
paths: paths:
- browser/ - browser/
when: always
only: only:
- /^feature-.*c.*\/.*$/ - /^feature-.*c.*\/.*$/
- /^hotfix-.*c.*\/.*$/ - /^hotfix-.*c.*\/.*$/
...@@ -207,7 +209,8 @@ test_browser_unit: ...@@ -207,7 +209,8 @@ test_browser_unit:
- HEADLESS=1 make -C browser/test functional - HEADLESS=1 make -C browser/test functional
artifacts: artifacts:
paths: paths:
- browser/ - browser/
when: always
reports: reports:
junit: browser/test/test/TEST-*.xml junit: browser/test/test/TEST-*.xml
only: only:
...@@ -234,6 +237,7 @@ test_browser_unit: ...@@ -234,6 +237,7 @@ test_browser_unit:
artifacts: artifacts:
paths: paths:
- browser/ - browser/
when: always
reports: reports:
junit: browser/test/test/TEST-*.xml junit: browser/test/test/TEST-*.xml
only: only:
...@@ -285,7 +289,14 @@ old-chrome-browser-functional-external-chrome: ...@@ -285,7 +289,14 @@ old-chrome-browser-functional-external-chrome:
tags: tags:
- legacy - legacy
# Code quality
code_quality: code_quality:
stage: test_quality
artifacts:
paths: [gl-code-quality-report.json]
code_quality_custom:
stage: test_quality stage: test_quality
script: make -C browser quality script: make -C browser quality
only: only:
...@@ -412,6 +423,7 @@ deploy_review_server: ...@@ -412,6 +423,7 @@ deploy_review_server:
- make -C browser icons - make -C browser icons
- cp ./docker/vidjil-client/conf/conf.js ./browser/js/conf.js - cp ./docker/vidjil-client/conf/conf.js ./browser/js/conf.js
- sed -i -r "s/localhost/${CI_BUILD_REF_SLUG}.server.ci.vidjil.org/g" ./browser/js/conf.js - sed -i -r "s/localhost/${CI_BUILD_REF_SLUG}.server.ci.vidjil.org/g" ./browser/js/conf.js
- 'sed -i "s/\"server_id\" : \"\"/\"server_id\" : \"${CI_BUILD_REF_SLUG}.server.ci.vidjil.org\"/" ./browser/js/conf.js'
- sed -r 's/^.*FILE_SOURCE.*$/FILE_SOURCE="\/usr\/share\/vidjil\/demo"/' ./docker/vidjil-server/conf/defs.py > ./server/web2py/applications/vidjil/modules/defs.py - sed -r 's/^.*FILE_SOURCE.*$/FILE_SOURCE="\/usr\/share\/vidjil\/demo"/' ./docker/vidjil-server/conf/defs.py > ./server/web2py/applications/vidjil/modules/defs.py
- sed -i -e "/EMAIL_SUBJECT_START/c EMAIL_SUBJECT_START='[Vidjil/CI][$CI_COMMIT_REF_NAME]'" -e '/FROM_EMAIL/c FROM_EMAIL="server.ci@vidjil.org"' ./server/web2py/applications/vidjil/modules/defs.py - sed -i -e "/EMAIL_SUBJECT_START/c EMAIL_SUBJECT_START='[Vidjil/CI][$CI_COMMIT_REF_NAME]'" -e '/FROM_EMAIL/c FROM_EMAIL="server.ci@vidjil.org"' ./server/web2py/applications/vidjil/modules/defs.py
- mv docker docker_${CI_BUILD_REF_SLUG} - mv docker docker_${CI_BUILD_REF_SLUG}
...@@ -423,7 +435,7 @@ deploy_review_server: ...@@ -423,7 +435,7 @@ deploy_review_server:
- sed -i -r "s/WEB2PY_ADMIN_PASSWORD=/WEB2PY_ADMIN_PASSWORD=$REVIEW_SERVER_ADMIN_PASSWORD/" docker-compose.yml - sed -i -r "s/WEB2PY_ADMIN_PASSWORD=/WEB2PY_ADMIN_PASSWORD=$REVIEW_SERVER_ADMIN_PASSWORD/" docker-compose.yml
- cd .. - cd ..
- rsync -av --exclude .git . $REVIEW_SERVER:$REVIEW_SERVER_PATH_SERVER$CI_BUILD_REF_SLUG || $(case "$?" in 0|23) exit 0 ;; *) exit $?; esac) - rsync -av --exclude .git . $REVIEW_SERVER:$REVIEW_SERVER_PATH_SERVER$CI_BUILD_REF_SLUG || $(case "$?" in 0|23) exit 0 ;; *) exit $?; esac)
- ssh $REVIEW_SERVER "cd $REVIEW_SERVER_PATH_SERVER; ./install_certs.sh ${CI_BUILD_REF_SLUG}; cd ${CI_BUILD_REF_SLUG}/docker_${CI_BUILD_REF_SLUG}; mkdir -p postfix/ssl; docker-compose up -d mysql fuse uwsgi nginx workers" - ssh $REVIEW_SERVER "cd $REVIEW_SERVER_PATH_SERVER; ./install_certs.sh ${CI_BUILD_REF_SLUG}; cd ${CI_BUILD_REF_SLUG}/docker_${CI_BUILD_REF_SLUG}; mkdir -p postfix/ssl; docker-compose up -d mysql fuse uwsgi nginx workers; sleep 20s; docker-compose exec -T uwsgi bash -c 'cd /usr/share/vidjil/server/web2py/applications/vidjil/scripts; /usr/local/bin/gosu 1005 bash launch_python_script.sh load-sql.py -n /usr/share/vidjil/docker/ci/ci.sql'"
environment: environment:
name: review_server/$CI_BUILD_REF_NAME name: review_server/$CI_BUILD_REF_NAME
url: http://$CI_BUILD_REF_SLUG.server.ci.vidjil.org/browser/ url: http://$CI_BUILD_REF_SLUG.server.ci.vidjil.org/browser/
......
...@@ -32,14 +32,17 @@ Benchmarks ...@@ -32,14 +32,17 @@ Benchmarks
* [ ] push: `git push origin master release-20XX-XX` * [ ] push: `git push origin master release-20XX-XX`
* [ ] mirror to GH: `git push github master release-20XX.XX` * [ ] mirror to GH: `git push github master release-20XX.XX`
* [ ] click `publish_release` (there may be changes to CD...) * [ ] click `publish_release` (there may be changes to CD...)
* [ ] deploy the doc
After these steps, we merge back the release in `dev`: After these steps, we merge back the release in `dev`:
* [ ] merge this MR to dev * [ ] merge this MR to dev
## After the release: deploy ## After the release: deploy
Sometimes, the deploy stages can occur several days after the release. * [ ] Click `deploy_release_prod` in the `deploy_prod` stage, deploying the release on `vidjil-algo-next` on the public server
Open a new internal issue with the "Deploy" template. * [ ] Open a new internal issue with the `Deploy (vidjil-algo)` template : vdj#XXXXX
/label ~cpp /label ~cpp
...@@ -291,16 +291,16 @@ int main (int argc, char **argv) ...@@ -291,16 +291,16 @@ int main (int argc, char **argv)
// ---------------------------------------------------------------------------------------------------------------------- // ----------------------------------------------------------------------------------------------------------------------
group = "Germline presets (at least one -g or -V/(-D)/-J option must be given)"; group = "Germline/recombination selection (at least one -g or -V/(-D)/-J option must be given)";
vector <string> multi_germlines ; vector <string> multi_germlines ;
app.add_option("--germline,-g", multi_germlines, R"Z( app.add_option("--germline,-g", multi_germlines, R"Z(
-g <.g FILE>(:FILTER) -g <.g FILE>(:FOCUS) ...
multiple locus/germlines, with tuned parameters. germline preset(s) (.g file(s)), detecting multiple recombinations, with tuned parameters.
Common values are '-g germline/homo-sapiens.g' or '-g germline/mus-musculus.g' Common values are '-g germline/homo-sapiens.g' or '-g germline/mus-musculus.g'
The list of locus/recombinations can be restricted, such as in '-g germline/homo-sapiens.g:IGH,IGK,IGL' One can focus on some recombinations, such as in '-g germline/homo-sapiens.g:IGH,IGK,IGL'
-g PATH -g PATH
multiple locus/germlines, shortcut for '-g PATH/)Z" DEFAULT_MULTI_GERMLINE_FILE R"Z(', human germline preset, shortcut for '-g PATH/)Z" DEFAULT_MULTI_GERMLINE_FILE R"Z(',
processes human TRA, TRB, TRG, TRD, IGH, IGK and IGL locus, possibly with incomplete/unusal recombinations)Z") processes human TRA, TRB, TRG, TRD, IGH, IGK and IGL locus, possibly with incomplete/unusal recombinations)Z")
-> group(group) -> type_name("GERMLINES"); -> group(group) -> type_name("GERMLINES");
...@@ -314,7 +314,7 @@ int main (int argc, char **argv) ...@@ -314,7 +314,7 @@ int main (int argc, char **argv)
app.add_option("-D", v_reps_D, app.add_option("-D", v_reps_D,
"custom D germline multi-fasta file(s), analyze into V(D)J components") "custom D germline multi-fasta file(s) for V(D)J designation")
-> group(group) -> type_name("FILE"); -> group(group) -> type_name("FILE");
app.add_option("-J", v_reps_J, app.add_option("-J", v_reps_J,
......
...@@ -4,9 +4,15 @@ ...@@ -4,9 +4,15 @@
/* default tag color */ /* default tag color */
/* #dcffed also available */ /* #dcffed also available */
#vmi-menu { #vmi-menu {
position: unset; top: 32px;
bottom: unset; right: 0;
width: unset; width: unset;
background-color: #000000;
margin: 6px 0 0 0;
}
#vmi-menu div {
padding: 5px;
border: 1px solid;
} }
html { html {
height: 100%; height: 100%;
...@@ -52,14 +58,15 @@ ul { ...@@ -52,14 +58,15 @@ ul {
} }
#visu-container { #visu-container {
position: relative; position: relative;
display: flex;
flex: 1 1 auto; flex: 1 1 auto;
flex-flow: column;
-khtml-user-select: none; -khtml-user-select: none;
-webkit-user-select: none; -webkit-user-select: none;
-moz-user-select: -moz-none; -moz-user-select: -moz-none;
-ms-user-select: none; -ms-user-select: none;
user-select: none; user-select: none;
height: 100%; width: 100%;
margin: auto;
overflow: hidden; overflow: hidden;
background: #000000; background: #000000;
} }
...@@ -107,28 +114,38 @@ ul { ...@@ -107,28 +114,38 @@ ul {
user-select: none; user-select: none;
overflow: hidden; overflow: hidden;
} }
#mid-container { #vidjil-panels {
position: fixed; position: fixed;
display: flex;
flex: 1 1 auto;
top: 32px; top: 32px;
left: 0;
bottom: 125px ; bottom: 125px ;
width: calc(100% - 6px + 6px);
overflow: hidden;
background: #000000; background: #000000;
margin: 6px; margin: 6px;
display: flex;
flex: auto;
overflow: hidden;
}
.vidjil-panels-left {
width: calc(100% - 6px - 70px);
}
.vidjil-panels-full {
width: calc(100% - 6px);
}
#mid-container {
display: flex;
flex: auto;
overflow: hidden;
} }
#right-container { #right-container {
-khtml-user-select: none; display: flex;
-webkit-user-select: none; flex: 1 0 auto;
-moz-user-select: -moz-none; flex-flow: column;
-ms-user-select: none;
user-select: none;
float: right; float: right;
width: 0px; width: 475px;
} }
#left-container { #left-container {
display: flex; display: flex;
flex: 1 0 auto;
flex-flow: column; flex-flow: column;
position: relative; position: relative;
width: 475px; width: 475px;
...@@ -142,11 +159,16 @@ ul { ...@@ -142,11 +159,16 @@ ul {
#visu, #visu,
#visu2 { #visu2 {
height: 50%; height: 50%;
display: flex;
flex: auto;
width: 100%; width: 100%;
} }
#visu2 { #visu2 {
max-height: calc(100% - 6px); max-height: calc(100% - 6px);
} }
#visu3 {
height: 100%;
}
line { line {
stroke: #586e75; stroke: #586e75;
stroke-width: 0.5; stroke-width: 0.5;
...@@ -414,6 +436,7 @@ line { ...@@ -414,6 +436,7 @@ line {
#list { #list {
flex: 1 1 auto; flex: 1 1 auto;
height: 0px; height: 0px;
min-height: 20%;
max-height: 100%; max-height: 100%;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
...@@ -445,12 +468,9 @@ line { ...@@ -445,12 +468,9 @@ line {
padding-right: 30px; padding-right: 30px;
} }
.list { .list {
width: 445px;
display: block;
padding: 2px; padding: 2px;
} }
.listElem { .listElem {
width: 445px;
font-size: 13px; font-size: 13px;
cursor: pointer; cursor: pointer;
-webkit-transition: color 0.2s; -webkit-transition: color 0.2s;
...@@ -459,19 +479,20 @@ line { ...@@ -459,19 +479,20 @@ line {
transition: color 0.2s; transition: color 0.2s;
padding: 1px 4px 4px 1px; padding: 1px 4px 4px 1px;
height: 14px; height: 14px;
display: flex;
} }
.selected { .selected {
color: #fdf6e3; color: #fdf6e3;
} }
.nameBox { .nameBox {
width: 300px;
margin-right: 10px; margin-right: 10px;
overflow: hidden; overflow: hidden;
display: inline-block; display: inline-block;
height: 16px; height: 16px;
position: relative; position: relative;
float: left;
white-space: nowrap; white-space: nowrap;
display: flex;
flex: 1 1 auto;
} }
.seq-fixed .nameBox { .seq-fixed .nameBox {
width: 250px; width: 250px;
...@@ -479,7 +500,6 @@ line { ...@@ -479,7 +500,6 @@ line {
.list .axisBox, .list .axisBox,
.axisBox span { .axisBox span {
max-width: 52px; max-width: 52px;
float: right;
overflow: hidden; overflow: hidden;
display: inline-block; display: inline-block;
max-height: 16px; max-height: 16px;
...@@ -500,9 +520,8 @@ line { ...@@ -500,9 +520,8 @@ line {
} }
.starBox { .starBox {
width: 16px; width: 16px;
float: right;
height: 16px; height: 16px;
display: inline-block; display: inline-flex;
user-select: none; user-select: none;
overflow: hidden; overflow: hidden;
} }
...@@ -517,9 +536,8 @@ line { ...@@ -517,9 +536,8 @@ line {
.infoBox { .infoBox {
font-size: 90%; font-size: 90%;
width: 16px; width: 16px;
float: right;
height: 15px; height: 15px;
display: inline-block; display: inline-flex;
user-select: none; user-select: none;
text-align: center; text-align: center;
border: solid; border: solid;
...@@ -588,8 +606,6 @@ line { ...@@ -588,8 +606,6 @@ line {
} }
/*style segmenter element*/ /*style segmenter element*/
.list_select { .list_select {
width: 445px;
display: block;
border: solid; border: solid;
border-width: 2px; border-width: 2px;
padding: 0px; padding: 0px;
...@@ -606,7 +622,7 @@ line { ...@@ -606,7 +622,7 @@ line {
} }
.seq-fixed { .seq-fixed {
position: relative; position: relative;
display: inline-block; display: inline-flex;
width: auto; width: auto;
margin: -2px; margin: -2px;
padding: 2px; padding: 2px;
...@@ -974,6 +990,10 @@ div.button { ...@@ -974,6 +990,10 @@ div.button {
padding-left: 10px; padding-left: 10px;
padding-right: 10px; padding-right: 10px;
} }
.clipboard-button {
margin-left: -5px;
padding: 3px;
}
.smallbutton { .smallbutton {
cursor: pointer; cursor: pointer;
font-size: 13px; font-size: 13px;
...@@ -1063,9 +1083,8 @@ span.logo { ...@@ -1063,9 +1083,8 @@ span.logo {
} }
#bot-container { #bot-container {
position: fixed; position: fixed;
left: 0;
bottom: 0; bottom: 0;
width: 100%; left: 6px;
border-top: solid; border-top: solid;
border-width: 6px; border-width: 6px;
min-height: 125px; min-height: 125px;
...@@ -1339,11 +1358,9 @@ span.warningReads { ...@@ -1339,11 +1358,9 @@ span.warningReads {
.axis_select select[selected=selected] { .axis_select select[selected=selected] {
color: #fdf6e3; color: #fdf6e3;
} }
#visu-separator { .visu-separator {
position: relative; position: relative;
height: 6px; height: 6px;
cursor: move;
cursor: -webkit-grab;
background: #333333; background: #333333;
} }
#bot-separator { #bot-separator {
...@@ -1354,15 +1371,17 @@ span.warningReads { ...@@ -1354,15 +1371,17 @@ span.warningReads {
position: relative; position: relative;
top: -6px; top: -6px;
} }
#vertical-separator { #vertical-separator,
#vertical-separator-right {
position: relative; position: relative;
float: left; float: left;
height: 100%;
width: 6px; width: 6px;
line-height: calc(100% - 1px);
background: #333333; background: #333333;
cursor: pointer; cursor: pointer;
} }
#vertical-separator-right {
float: right;
}
#visu-separator:hover, #visu-separator:hover,
#vertical-separator:hover, #vertical-separator:hover,
#bot-separator:hover { #bot-separator:hover {
...@@ -1906,11 +1925,12 @@ table.log textarea { ...@@ -1906,11 +1925,12 @@ table.log textarea {
border: 1px solid #333333; border: 1px solid #333333;
overflow-wrap: break-word; overflow-wrap: break-word;
overflow-y: hidden; overflow-y: hidden;
max-width: 457px;
min-height: 32px; min-height: 32px;
max-height: 32px; max-height: 32px;
width: 100%; width: 99%;
background-color: #000000; background-color: #000000;
margin-left: auto;
margin-right: auto;
} }
.patient_info_text { .patient_info_text {
margin-bottom: 5px; margin-bottom: 5px;
...@@ -2284,3 +2304,30 @@ form .form_label { ...@@ -2284,3 +2304,30 @@ form .form_label {
.list_lock_on { .list_lock_on {
color: #839496; color: #839496;
} }
.set_group {
display: inline-flex;
flex-wrap: wrap;
flex-direction: row;
margin-bottom: 25px;
margin-right: 15px;
flex-flow: column;
width: 48%;
}
.set_group_header {
width: 100%;
}
.set_cell {
word-break: break-all;
}
.set_data {
width: 100%;
}
.analysis_button {
display: inline-flex;
}
.margined-top {
margin-top: 10px;
}
.margined-bottom {
margin-bottom: 10px;
}
...@@ -11,7 +11,7 @@ retrieve: ...@@ -11,7 +11,7 @@ retrieve:
### Don't edit below ### ### Don't edit below ###
FONTELLO_HOST ?= http://fontello.com FONTELLO_HOST ?= https://fontello.com
fontopen: fontopen:
@if test ! `which curl` ; then \ @if test ! `which curl` ; then \
......
...@@ -4,9 +4,15 @@ ...@@ -4,9 +4,15 @@
/* default tag color */ /* default tag color */
/* #dcffed also available */ /* #dcffed also available */
#vmi-menu { #vmi-menu {
position: unset; top: 32px;
bottom: unset; right: 0;
width: unset; width: unset;
background-color: #ffffff;
margin: 6px 0 0 0;
}