diff options
-rw-r--r-- | qc_app/dbinsert.py | 36 | ||||
-rw-r--r-- | qc_app/static/css/styles.css | 8 | ||||
-rw-r--r-- | qc_app/static/css/two-column-with-separator.css | 27 | ||||
-rw-r--r-- | qc_app/templates/select_platform.html | 2 | ||||
-rw-r--r-- | qc_app/templates/select_study.html | 88 |
5 files changed, 158 insertions, 3 deletions
diff --git a/qc_app/dbinsert.py b/qc_app/dbinsert.py index ea47806..e506175 100644 --- a/qc_app/dbinsert.py +++ b/qc_app/dbinsert.py @@ -53,6 +53,23 @@ def genechips(): return {} +def studies_by_species_and_platform(speciesid:int, genechipid:int) -> tuple: + "Retrieve the studies by the related species and gene platform" + with database_connection() as conn: + with conn.cursor(cursorclass=DictCursor) as cursor: + query = ( + "SELECT Species.SpeciesId, ProbeFreeze.* " + "FROM Species INNER JOIN InbredSet " + "ON Species.SpeciesId=InbredSet.SpeciesId " + "INNER JOIN ProbeFreeze " + "ON InbredSet.InbredSetId=ProbeFreeze.InbredSetId " + "WHERE Species.SpeciesId = %s " + "AND ProbeFreeze.ChipId = %s") + cursor.execute(query, (speciesid, genechipid)) + return tuple(cursor.fetchall()) + + return tuple() + @dbinsertbp.route("/platform", methods=["POST"]) def select_platform(): "Select the platform (GeneChipId) used for the data." @@ -76,7 +93,24 @@ def select_platform(): @dbinsertbp.route("/study", methods=["POST"]) def select_study(): - return "Not implemented yet" + "View to select/create the study (ProbeFreeze) associated with the data." + form = request.form + try: + assert form.get("filename"), "filename" + assert form.get("filetype"), "filetype" + assert form.get("species"), "species" + assert form.get("genechipid"), "platform" + + speciesid = form["species"] + genechipid = form["genechipid"] + + the_studies = studies_by_species_and_platform(speciesid, genechipid) + return render_template( + "select_study.html", filename=form["filename"], + filetype=form["filetype"], species=speciesid, genechipid=genechipid, + studies=the_studies) + except AssertionError as aserr: + return render_error(f"Missing data: {aserr.args[0]}") @dbinsertbp.route("/select-dataset", methods=["POST"]) def select_dataset(): diff --git a/qc_app/static/css/styles.css b/qc_app/static/css/styles.css index d27952a..a42ffb0 100644 --- a/qc_app/static/css/styles.css +++ b/qc_app/static/css/styles.css @@ -117,10 +117,16 @@ fieldset { .form-col-2 { grid-column: 2 / 3; - width: 20%; } input[disabled="true"],input[disabled="disabled"] { border-color: #878787; background-color: #A9A9A9; } + +form legend { + padding-left: 3em; + text-transform: capitalize; + font-weight: bolder; + line-height: 2em; +} diff --git a/qc_app/static/css/two-column-with-separator.css b/qc_app/static/css/two-column-with-separator.css new file mode 100644 index 0000000..b6efd46 --- /dev/null +++ b/qc_app/static/css/two-column-with-separator.css @@ -0,0 +1,27 @@ +.two-column-with-separator { + display: grid; + grid-template-columns: 9fr 1fr 9fr; +} + +.two-col-sep-col1 { + grid-column: 1 / 2; +} + +.two-col-sep-separator { + grid-column: 2 / 3; + text-align: center; + color: #FE3535; + font-weight: bolder; +} + +.two-col-sep-col2 { + grid-column: 3 / 4; +} + +.two-col-sep-col1, .two-col-sep-col2 { + border-style: solid; + border-color: #FE3535; + border-width: 1px; + border-radius: 2em; + padding: 2em 3em 2em 3em; +} diff --git a/qc_app/templates/select_platform.html b/qc_app/templates/select_platform.html index f8db736..131003d 100644 --- a/qc_app/templates/select_platform.html +++ b/qc_app/templates/select_platform.html @@ -3,7 +3,7 @@ {%block title%}Select Dataset{%endblock%} {%block contents%} -<h1 class="heading">{{filename}}: select platform</h2> +<h2 class="heading">{{filename}}: select platform</h2> <form method="POST" action="{{url_for('dbinsert.select_study')}}" id="select-platform-form" data-genechips="{{genechips_data}}"> diff --git a/qc_app/templates/select_study.html b/qc_app/templates/select_study.html new file mode 100644 index 0000000..8d7a98b --- /dev/null +++ b/qc_app/templates/select_study.html @@ -0,0 +1,88 @@ +{%extends "base.html"%} + +{%block title%}Select Dataset{%endblock%} + +{%block css%} +<link rel="stylesheet" href="/static/css/two-column-with-separator.css" /> +{%endblock%} + +{%block contents%} +<h2 class="heading">{{filename}}: select study</h2> + +<div class="two-column-with-separator"> + <form method="POST" action="{{url_for('dbinsert.select_study')}}" + id="select-platform-form" data-genechips="{{genechips_data}}" + class="two-col-sep-col1"> + <legend>Select from existing study</legend> + <input type="hidden" name="filename" value="{{filename}}" /> + <input type="hidden" name="filetype" value="{{filetype}}" /> + <input type="hidden" name="species" value="{{species}}" /> + <input type="hidden" name="genechipid" value="{{genechipid}}" /> + + <fieldset> + <label for="study" class="form-col-1">study:</label> + <select id="study" name="studyid" class="form-col-2"> + {%for study in studies:%} + <option value="{{study['ProbeFreezeId']}}">{{study["Name"]}}</option> + {%endfor%} + </select> + </fieldset> + + <fieldset> + <input type="submit" value="submit selected study" + class="btn btn-main form-col-2" + {%if studies | length == 0:%} + disabled="disabled" + {%endif%} /> + </fieldset> + </form> + + <p class="two-col-sep-separator">OR</p> + + <form method="POST" action="{{url_for('dbinsert.select_study')}}" + id="select-platform-form" data-genechips="{{genechips_data}}" + class="two-col-sep-col2"> + <legend>Create new study</legend> + <input type="hidden" name="filename" value="{{filename}}" /> + <input type="hidden" name="filetype" value="{{filetype}}" /> + <input type="hidden" name="species" value="{{species}}" /> + <input type="hidden" name="genechipid" value="{{genechipid}}" /> + + <fieldset> + <label for="studyname" class="form-col-1">name:</label> + <input type="text" id="studyname" name="studyname" class="form-col-2" + required="required" /> + </fieldset> + + <fieldset> + <label for="studyfullname" class="form-col-1">full name:</label> + <input type="text" id="studyfullname" name="studyfullname" + class="form-col-2" /> + </fieldset> + + <fieldset> + <label for="studyshortname" class="form-col-1">short name:</label> + <input type="text" id="studyshortname" name="studyshortname" + class="form-col-2" /> + </fieldset> + + <fieldset> + <label for="group" class="form-col-1">group:</label> + <select id="group" name="inbredsetid" class="form-col-2"> + </select> + </fieldset> + + <fieldset> + <label for="tissue" class="form-col-1">tissue:</label> + <select id="tissue" name="tissueid" class="form-col-2"> + </select> + </fieldset> + + <fieldset> + <input type="submit" value="create study" + class="btn btn-main form-col-2" /> + </fieldset> + </form> +</div> + +{%endblock%} |