Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

A card based projects list in Vue #839

Merged
merged 151 commits into from
Dec 13, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
e8c4203
Hello world for projects status
alneberg Mar 1, 2024
bac7a57
Got Vue to run for projects_status
alneberg Mar 1, 2024
555872c
A basic loop in Vue
alneberg Mar 5, 2024
9358b33
Got basic project list fetching to work in Vue
alneberg Mar 7, 2024
125eccd
Project list sorted on most recent date
alneberg Mar 7, 2024
d0ee355
Basic card setup and a checkbox to switch sorting order
alneberg Mar 7, 2024
52eb977
Badge for project type with color
alneberg Mar 8, 2024
22dc4a3
Able to filter away all
alneberg Mar 8, 2024
c805b8b
Can filter on any project status
alneberg Mar 8, 2024
7dfaf10
Can now filter on project type and project coordinator as well
alneberg Mar 8, 2024
24a8b3d
Counting types work
alneberg Mar 8, 2024
019016a
Search works
alneberg Mar 8, 2024
426480c
Started adding latest running note, but not finished
alneberg Mar 8, 2024
0f91ea3
A bit more DRY for running notes
alneberg Mar 11, 2024
45b12b7
Even more DRY
alneberg Mar 11, 2024
cf2e93b
Tiny styling of the filter part
alneberg Mar 11, 2024
4558136
Load bootstrap before vue and other js opt-ins
alneberg Mar 11, 2024
7fb5ab7
Slightly nicer filtering of projects coordinators
alneberg Mar 11, 2024
dd4e643
Nicer filter of status and type
alneberg Mar 11, 2024
69e9b44
Sorting icon
alneberg Mar 11, 2024
2e7c820
A separate project card component
alneberg Mar 11, 2024
1b7bac0
Fetch project agreements in slices
alneberg Mar 12, 2024
eb5d774
Color and badge for project status
alneberg Mar 12, 2024
0dd21af
Formatting of running note
alneberg Mar 12, 2024
b658ad7
Sticky notes on project status
alneberg Mar 12, 2024
74051cb
simplify the genstat_defaults fetching
alneberg Mar 12, 2024
a3a7fa3
Added a api endpoint to fetch multiple latest sticky notes
alneberg Mar 12, 2024
7608e0b
Basic fetching of latest sticky running note
alneberg Mar 12, 2024
7864370
Automatically fetch sticky running notes
alneberg Mar 12, 2024
7324913
Switched to a column based x-overflow layout
alneberg Mar 14, 2024
8e76b10
Quicker filtering
alneberg Mar 14, 2024
5c2033f
Added application filter
alneberg Mar 14, 2024
8647357
Bugfix for type label
alneberg Mar 14, 2024
c7e3d18
More information on each project
alneberg Mar 14, 2024
79242cc
Added tooltip and NA for project info
alneberg Mar 14, 2024
8d3fa7d
A bit of padding and bugfix of sticky dates
alneberg Mar 14, 2024
15b7296
Added a spinner for loading projects
alneberg Mar 14, 2024
c4c68a2
Possible to choose category to use for columns
alneberg Mar 14, 2024
73127ba
Select for sorting and added project comment
alneberg Mar 14, 2024
72f3086
Slight update of the readme
alneberg Mar 26, 2024
636478c
Using modals for the cards instead of collapse
alneberg Mar 26, 2024
f6b86c4
Testing out websocket toy example
alneberg Apr 3, 2024
087689d
Trying out websockets
alneberg Apr 5, 2024
295e38b
stashing some javscript websocket tests
alneberg Apr 8, 2024
06da4cc
Moved projects_samples to 'old'
alneberg Apr 11, 2024
da5e98c
Basic new project page that is also the modal content
alneberg Apr 11, 2024
19f922d
Added common header for modal and project page
alneberg Apr 11, 2024
695b446
Complete restructure of files and how the app should run
alneberg Apr 12, 2024
a6a5b14
Started playing around with tabs for projects
alneberg Apr 12, 2024
26f18c1
Dynamic column width on the project page
alneberg Apr 15, 2024
44881c1
Added tooltips with field sources and fetching sample information
alneberg May 13, 2024
8b92cbe
Added most fields on the main project page
alneberg May 14, 2024
12b0ff0
Added latest sticky note to project page
alneberg May 14, 2024
da1fa0a
Text wrap for portal title
alneberg May 14, 2024
5b50ca2
Typofix
alneberg May 15, 2024
6c5b122
left aligned the dl-horizontal and fixed the old project page
alneberg May 17, 2024
770460b
Added filtering on Library Construction Method
alneberg May 17, 2024
6c4f8e5
Sort by status and close button of the modal
alneberg May 17, 2024
ce682f3
Basic modal navigation, a bit buggy still
alneberg May 20, 2024
f379adf
Avoid overwriting sticky running notes
alneberg May 20, 2024
b5ed532
More Vue style handling of the modal, managed to fix the scrolling bug
alneberg May 20, 2024
2e75f4f
Got the tabs working again
alneberg May 20, 2024
1932591
Moved running notes to it's own component
alneberg May 21, 2024
a7875d7
Collapseable new running note form
alneberg May 21, 2024
af4a4af
Filtering and searching project running notes work
alneberg May 21, 2024
2da5eb8
Toggle preview categories for running notes
alneberg May 22, 2024
ee0c078
Put together user tagging
alneberg May 24, 2024
cec9f41
Trying to submit running notes from Vue
alneberg May 27, 2024
508d89b
Fix for user with running notes and also disable form when submitting…
alneberg May 28, 2024
77ff3ed
Press enter to start adding a running note
alneberg May 28, 2024
2264eb1
Added lab responsible as a filter option
alneberg May 28, 2024
3aa0970
Don't always show the full date of running notes
alneberg May 28, 2024
7ce9ee5
Trying out reports
alneberg May 28, 2024
a31e969
Type is not a good variable name
alneberg May 28, 2024
f72bc97
Don't read in MultiQC until needed
alneberg May 29, 2024
12803f6
Reversed key and value in javascript
alneberg May 29, 2024
1d19ed7
Display reports somewhat nice
alneberg May 30, 2024
2c53168
Pill badge
alneberg Jun 3, 2024
fbb451f
trying out badges for multiqc as well
alneberg Jun 3, 2024
352924d
Less padding
alneberg Jun 3, 2024
e8f38ab
Adjusting report titles in links
alneberg Jun 3, 2024
189d889
Collapseable filter list
alneberg Jun 3, 2024
626711c
Sorting the filter alternatives
alneberg Jun 3, 2024
7f17934
Fix link bug for reports
alneberg Jun 3, 2024
787c8aa
Cleaning up the new project page title
alneberg Jun 4, 2024
b4f1453
Moved out columns and sorting selects
alneberg Jun 4, 2024
8110541
Display active filters
alneberg Jun 5, 2024
8c11163
Refactor filters and got fitler buttons to work
alneberg Jun 11, 2024
5a3c62f
Renamed from projects status to project cards and added under constru…
alneberg Jun 17, 2024
15e2dc8
Changed default setting and restored type filter
alneberg Jun 17, 2024
2bf8f1d
Dev version of vue to help with debugging
alneberg Jun 26, 2024
e1ddf67
Renaming the html files temporarily for merging
alneberg Jun 26, 2024
e46423f
Merge with master
alneberg Jun 26, 2024
78793ae
Moved project samples to old and replaced it
alneberg Jun 26, 2024
a358ff0
README formatting
alneberg Jun 26, 2024
80e75b0
Link to project cards from index and link to old project page from new
alneberg Jun 26, 2024
627676e
Link from old project page to the new one
alneberg Jun 26, 2024
a2819c6
Autoreload for the old html
alneberg Jun 26, 2024
6b8b1ea
Copy project name to clipboard
alneberg Jun 26, 2024
0a3d3f4
Merged with master
alneberg Nov 8, 2024
6d2c1a5
Add project name to Clone Project search
aanil Nov 8, 2024
018170a
Ruff format
aanil Nov 8, 2024
72b4cdb
Changed to micromamba dockerfile and added automatic server start in …
alneberg Nov 11, 2024
957844a
Fixed formatting and a bug found by ruff
alneberg Nov 11, 2024
42bae21
Link element FCs correctly in bioinfo tab page
aanil Nov 12, 2024
4aab030
Add element FCs to search
aanil Nov 12, 2024
eb30988
Some clarifying comments
alneberg Nov 14, 2024
0b9131d
Ruff formatting
alneberg Nov 14, 2024
b0cc93c
Removed unused variables
alneberg Nov 14, 2024
513fd10
Merged with master
alneberg Nov 14, 2024
a14b77e
Merge pull request #898 from aanil/queues_update
aanil Nov 14, 2024
2a444b5
Make code a bit clearer by review suggestion
aanil Nov 14, 2024
8c77974
Merge pull request #895 from aanil/samples_tab
aanil Nov 14, 2024
67ef31b
Add icon for new processed status for aviti FC and add some comments
aanil Nov 14, 2024
c3382d9
Merge pull request #899 from aanil/samples_tab
aanil Nov 22, 2024
ec19d4f
Spelling fix from review
alneberg Nov 25, 2024
b70a7b8
Added source for external js
alneberg Nov 25, 2024
ae32dbe
Added comment about multiqc report name assignment
alneberg Nov 26, 2024
ed326f3
Made field soruce for contact a bit less redundant
alneberg Nov 28, 2024
e94800d
Made field source for days in production less repetetive
alneberg Nov 28, 2024
6580342
Match names not only from the start. Thanks @aanil
alneberg Nov 28, 2024
b772812
Running note fixes.
alneberg Nov 28, 2024
be23539
More running note fixes.
alneberg Nov 28, 2024
b9b9992
More running note fixes.
alneberg Nov 28, 2024
b01d047
Nice colors for pending inside cards, thanks @aanil
alneberg Nov 28, 2024
3b9f178
Removed a console.log statement
alneberg Nov 28, 2024
fe11287
Do not use text-muted for running notes
alneberg Nov 28, 2024
e63a15d
Fix bug with running notes when aborting submission
alneberg Nov 29, 2024
e253cb8
Added markdown help modal to the Vue running notes components
alneberg Nov 29, 2024
6b5a718
Skip async for fetch all running notes
alneberg Nov 29, 2024
87b56e3
Added tbody to the markdown help modal
alneberg Nov 29, 2024
dace28c
Prevent default when submitting running note.
alneberg Nov 29, 2024
c7cdeb1
Change way of preventing default for form categories step 1.
alneberg Nov 29, 2024
20283d1
Change way of preventing default for form categories step 2.
alneberg Nov 29, 2024
8e2f726
Ignore running note links when identifying Pids in running notes
aanil Nov 29, 2024
db77194
Highlight important running notes in cards, part 1.
alneberg Dec 2, 2024
55c9b58
Highlight important running notes in cards, part 2.
alneberg Dec 2, 2024
9374776
Merge pull request #900 from aanil/py312
aanil Dec 2, 2024
4a6165a
Merge branch 'project_status' of https://github.com/alneberg/status i…
aanil Dec 2, 2024
5f3d370
Add card link and make selected card glow
aanil Dec 2, 2024
7797289
Remove unused classes
aanil Dec 2, 2024
543c7d7
Change the running note glow logic
alneberg Dec 4, 2024
b384104
Move label classes to main component, add card counting by category, …
aanil Dec 10, 2024
04eb581
Make markdown help a card in the same layer instead of a modal
aanil Dec 10, 2024
569064b
Make cat_classes a common variable
aanil Dec 11, 2024
a078bb0
Fix for cat_classes not visible in the template
aanil Dec 11, 2024
3e80ac6
Stick to naming convention
aanil Dec 11, 2024
8da141a
Merge pull request #5 from aanil/alneberg_proj_status
alneberg Dec 12, 2024
f281cc7
Update status/running_notes.py
alneberg Dec 13, 2024
5a1ccc1
Turns the 'All' on again if all checkboxes are unchecked.
alneberg Dec 13, 2024
377b92d
Turns the 'All' on again if all checkboxes are unchecked.
alneberg Dec 13, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 6 additions & 9 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,19 @@
"extensions": [
"charliermarsh.ruff",
"ms-python.python",
"vscode-es6-string-html"
"Tobermory.es6-string-html"
]
}
},
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
"postCreateCommand": [
"pip3 install -e .",
"ln -s /root/conf/.genologicsrc /root/.genologicsrc",
"ln -s /root/conf/genosqlrc.yaml /root/.genosqlrc.yaml"
],
"forwardPorts": [9761],
"postCreateCommand": "./.devcontainer/postCreateCommand.sh",
"postStartCommand": "cd run_dir && python ../status_app.py --develop --testing_mode",
// Configure tool-specific properties.
// "customizations": {},
// Uncomment to connect as an existing user other than the container default. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "devcontainer"
"remoteUser": "mambauser",
"mounts": [
"source=${localEnv:HOME}/conf,target=/root/conf,type=bind,consistency=cached"
"source=${localEnv:HOME}/conf,target=/home/mambauser/conf,type=bind,consistency=cached"
]
}
9 changes: 9 additions & 0 deletions .devcontainer/postCreateCommand.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
#!/usr/bin/env bash

/usr/local/bin/_entrypoint.sh

echo $PATH

python -m pip install -e .
ln -s /home/mambauser/conf/.genologicsrc /home/mambauser/.genologicsrc
ln -s /home/mambauser/conf/genosqlrc.yaml /home/mambauser/.genosqlrc.yaml
22 changes: 14 additions & 8 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,17 +1,23 @@
FROM condaforge/mambaforge:latest

FROM mambaorg/micromamba:latest

# Need git to install genologics
USER root
RUN apt-get update && apt-get install -y --no-install-recommends \
git \
&& rm -rf /var/lib/apt/lists/*
USER $MAMBA_USER

# Install dependencies
COPY conda_requirements.yml conda_requirements.yml
RUN mamba install -y python=3.12
RUN mamba install -y pango>=1.42.4 pandas>=1.3.2
RUN mamba install -y -c conda-forge psycopg2 open-fonts xorg-libxrender xorg-libxext xorg-libxau
COPY --chown=$MAMBA_USER:$MAMBA_USER conda_requirements.yml conda_requirements.yml
COPY --chown=$MAMBA_USER:$MAMBA_USER requirements.txt /tmp/requirements.txt
COPY --chown=$MAMBA_USER:$MAMBA_USER requirements_dev.txt /tmp/requirements_dev.txt

RUN micromamba install -y -n base -f conda_requirements.yml

COPY requirements.txt requirements.txt
ARG MAMBA_DOCKERFILE_ACTIVATE=1
# Update pip to latest version
RUN python -m ensurepip --upgrade
RUN python -m pip install --upgrade pip
RUN python -m pip install --upgrade setuptools
RUN python -m pip install -r requirements.txt
RUN python -m pip install -r requirements.txt
RUN python -m pip install -r requirements_dev.txt
11 changes: 8 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
# Genomics Status

Genomics Status is a Tornado web app for visualizing information and statistics regarding SciLifeLab Genomics platform operations.
Genomics Status is a Tornado web app for visualizing information and statistics regarding operations by NGI Stockholm at SciLifeLab.

Status interfaces with StatusDB; the CouchDB database instance we're using at SciLifeLab to store metadata in
various forms. Document specifications for StatusDB are available in the internal wiki. Documentation about CouchDB can be found [here](http://guide.couchdb.org/).
Genomics Status interfaces with StatusDB; the CouchDB database instance used to store metadata in various forms. Documentation about CouchDB can be found [here](http://guide.couchdb.org/).

## Installing and running genomics status

Expand Down Expand Up @@ -169,3 +168,9 @@ Handlers that inherit from ```tornado.web.RequestHandler``` should implement at
Tornado templates are a good way to generate dynamic pages server side. The advantage of templates is that you can embeed python code in them. [The official documentation](http://www.tornadoweb.org/en/stable/template.html) is good enough to learn how they work.

On Genomics Status, templates are located in `status/run_dir/design`


TODO:
- [ ] Fix links to old project page vs new project page
- [ ] Add link to project cards from menu and front page

2 changes: 1 addition & 1 deletion run_dir/design/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,9 @@ <h6 class="dropdown-header">External</h6>
</div>
</div>

<script src="/static/js/bootstrap-5-alpha.bundle.min.js"></script>
{% block js %}
{% end %}
<script src="/static/js/bootstrap-5-alpha.bundle.min.js"></script>
<script>
$('.a-modal').on('click', function(e){
e.preventDefault();
Expand Down
6 changes: 5 additions & 1 deletion run_dir/design/bioinfo_tab/run_lane_sample_view.html
Original file line number Diff line number Diff line change
Expand Up @@ -69,12 +69,16 @@
<tbody class="text-center">
{% for flowcell_id, flowcell in sorted(bioinfo['run_lane_sample_view'].items()) %}
{% set disabled = True if flowcell.get('flowcell_status') in ['Demultiplexing', 'Transferring', 'Sequencing', 'ERROR', 'Failed', 'Delivered'] else False %}
{% set url_addition = "" %}
{% if flowcell.get("instrument_type") == "element"%}
{% set url_addition = "_element" %}
{% end %}
<tr class="bioinfo-fc {% if disabled %} bioinfo-status-disabled {% end %}"
id="bioinfo-fc-{{ flowcell_id }}" data-parent="#bioinfo-project-{{ project_id }}">
<td class="bioinfo-status-expand"><a class="bioinfo-expand text-decoration-none" href="#bioinfo-fc-{{ flowcell_id }}">
<span class="fa fa-chevron-right"></span></a></td>
<td></td>
<td><samp><a class="text-decoration-none" href="/flowcells/{{ flowcell_id }}">{{ flowcell_id }}</a></samp></td>
<td><samp><a class="text-decoration-none" href="/flowcells{{url_addition}}/{{ flowcell_id }}">{{ flowcell_id }}</a></samp></td>
<td class="bioinfo-status-runstate"><span class="badge {{ status_css.get(flowcell['flowcell_status'], 'bg-secondary') }}">{{ flowcell['flowcell_status'] }}</span></td>
<td class="bioinfo-status-row ?"><span class="fa fa-arrow-alt-right"></span></td>
<td class="bioinfo-status-qc undemultiplexedreads unknown">?</td>
Expand Down
6 changes: 5 additions & 1 deletion run_dir/design/bioinfo_tab/sample_run_lane_view.html
Original file line number Diff line number Diff line change
Expand Up @@ -113,13 +113,17 @@
</td>
</tr>
{% for flowcell_id, flowcell in sorted(sample['flowcells'].items()) %}
{% set url_addition = "" %}
{% if flowcell.get("instrument_type") == "element"%}
{% set url_addition = "_element" %}
{% end %}
<tr class="bioinfo-fc {% if flowcell.get('flowcell_status') in ['Demultiplexing', 'Transferring', 'Sequencing', 'ERROR', 'Failed', 'Delivered'] %} bioinfo-status-disabled {% end %}"
id="bioinfo-fc-{{ sample_id }}-{{ flowcell_id }}"
data-parent="#bioinfo-sample-{{ sample_id }}" style="display:none;">
<td></td>
<td class="bioinfo-status-expand"><a href="#bioinfo-fc-{{ sample_id }}-{{ flowcell_id }}" class="bioinfo-expand">
<span class="fa fa-chevron-right"></span></a></td>
<td><samp><a class="text-decoration-none" href="/flowcells/{{ flowcell_id }}">{{ flowcell_id }}</a></samp></td>
<td><samp><a class="text-decoration-none" href="/flowcells{{url_addition}}/{{ flowcell_id }}">{{ flowcell_id }}</a></samp></td>
<td class="bioinfo-status-runstate"><span class="badge {{ status_css.get(flowcell['flowcell_status'], 'bg-secondary') }}">{{ flowcell['flowcell_status'] }}</span></td>
<td class="bioinfo-status-row ?"><span class="fa fa-arrow-alt-right"></span></td>
<td class="bioinfo-status-qc undemultiplexedreads unknown">?</td>
Expand Down
2 changes: 2 additions & 0 deletions run_dir/design/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ <h6 class="dropdown-header">User Presets</h6>
<li><a class="dropdown-item" href="/projects?load_preset={{preset_name}}">{{preset_name}}</a></li>
{% end %}
{% end %}
<div role="separator" class="dropdown-divider"></div>
<li><a class="dropdown-item" href="/project_cards">Experimental: Project Cards</a></li>
</ul>
</div>
</div>
Expand Down
24 changes: 24 additions & 0 deletions run_dir/design/project_cards.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
{% extends "base.html" %}

<!--
Template file: projects_status.html
URL: /project_cards
Title: Project cards
-->


{% block stuff %}

<div id="v_projects_main">
<v-projects-cards :user="{email: '{{user.email}}', user: '{{user.name}}'}"/>
</div>
{% end %}

{% block js %}

<script src="/static/js/vue.v3.2.47.global.prod.js"></script>
<script src="/static/js/axios.v1.3.4.min.js"></script>
<script src="/static/js/external/textarea-caret.3.1.0.js"></script>
<script type="module" src="/static/js/projects_main_vue.js"></script>

{% end %}
Loading
Loading