mirror of
https://github.com/Novartis/cellxgene-gateway.git
synced 2026-10-10 06:00:56 +08:00
rebased "Introduction of ItemSource interface" patch
This commit is contained in:
@@ -10,59 +10,68 @@
|
||||
-->
|
||||
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Cellxgene Gateway - FILE CRAWLER</title>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
|
||||
<link rel="icon" type="image/png" href="{{ url_for('static', filename='nibr.ico') }}">
|
||||
{% for script in extra_scripts %}
|
||||
<script src="{{ script }}"></script>
|
||||
{% endfor %}
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
|
||||
{% for script in extra_scripts %}
|
||||
<script src="{{ script }}"></script>
|
||||
{% endfor %}
|
||||
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css"
|
||||
integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO" crossorigin="anonymous">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<header class="navbar navbar-expand navbar-dark flex-column flex-md-row bd-navbar">
|
||||
<h3>Cellxgene Gateway - Cache Status</h3>
|
||||
<h3>Cellxgene Gateway - Cache Status</h3>
|
||||
</header>
|
||||
<br>
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>PID</th>
|
||||
<th>dataset</th>
|
||||
<th>annotation_file</th>
|
||||
<th>port</th>
|
||||
<th>launchtime</th>
|
||||
<th>last access</th>
|
||||
<th>status</th>
|
||||
<th>message</th>
|
||||
<th>http_status</th>
|
||||
<th>actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for entry in entry_list %}
|
||||
<tr>
|
||||
<td>{{ entry.pid }}</td>
|
||||
<td><a href="{{ url_for('do_view', path=entry.key.pathpart) }}">{{ entry.key.dataset }}</a></td>
|
||||
<td>{{ entry.key.annotation_file }}</td>
|
||||
<td>{{ entry.port }}</td>
|
||||
<td class="timestamp">{{ entry.launchtime }}</td>
|
||||
<td class="timestamp">{{ entry.timestamp }}</td>
|
||||
<td>{{ entry.status.name }}</td>
|
||||
<td>{{ entry.message }}</td>
|
||||
<td>{{ entry.http_status }}</td>
|
||||
<td>
|
||||
{% if entry.status.name == 'loaded' %}
|
||||
<a href="{{ url_for('do_terminate', path=entry.key.pathpart) }}"> terminate </a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
<tr>
|
||||
<th>PID</th>
|
||||
<th>dataset</th>
|
||||
<th>annotation_file</th>
|
||||
<th>source</th>
|
||||
<th>port</th>
|
||||
<th>launchtime</th>
|
||||
<th>last access</th>
|
||||
<th>status</th>
|
||||
<th>message</th>
|
||||
<th>http_status</th>
|
||||
<th>actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for entry in entry_list %}
|
||||
<tr>
|
||||
<td>{{ entry.pid }}</td>
|
||||
<td><a
|
||||
href="{{ url_for('do_view', path=entry.key.descriptor, source_name=entry.key.source_name) }}">{{ entry.key.h5ad_item.descriptor }}</a>
|
||||
</td>
|
||||
<td>{{ entry.key.annotation_descriptor }}</td>
|
||||
<td>{{ entry.source_name }}</td>
|
||||
<td>{{ entry.port }}</td>
|
||||
<td class="timestamp">{{ entry.launchtime }}</td>
|
||||
<td class="timestamp">{{ entry.timestamp }}</td>
|
||||
<td>{{ entry.status.name }}</td>
|
||||
<td>{{ entry.message }}</td>
|
||||
<td>{{ entry.http_status }}</td>
|
||||
<td>
|
||||
{% if entry.status.name == 'loaded' %}
|
||||
<a
|
||||
href="{{ url_for('do_terminate', path=entry.key.descriptor, source_name=entry.key.source_name) }}">
|
||||
terminate </a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<script>
|
||||
$(() => {
|
||||
$(".timestamp").each(function(){
|
||||
$(".timestamp").each(function () {
|
||||
const el = $(this);
|
||||
const ts = el.text();
|
||||
const dt = new Date(parseInt(ts * 1000));
|
||||
@@ -71,4 +80,5 @@
|
||||
})
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
</html>
|
||||
@@ -44,47 +44,6 @@
|
||||
<u>Cache Status: view status of launched cellxgene servers.</u></a>
|
||||
</div>
|
||||
|
||||
{% if enable_upload %}
|
||||
<br>
|
||||
<h1 style="padding-left:35px">
|
||||
How To Upload Data via HTTP:
|
||||
</h1>
|
||||
<ol style="padding-left:85px;">
|
||||
<li>
|
||||
Create a folder for your Username:
|
||||
</li>
|
||||
<br>
|
||||
<form action="{{ url_for('make_user') }}" method="post">
|
||||
Username <input type="text" name="directory">
|
||||
<input type="submit" value="Create">
|
||||
</form>
|
||||
<li>
|
||||
Create a subdirectory under the selected Folder:
|
||||
</li>
|
||||
<br>
|
||||
<form action="{{ url_for('make_subdir') }}" method="post">
|
||||
<select name="usernames" id="usernames">
|
||||
{% for user in users %}
|
||||
<option value="{{ user }}">{{ user }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
<br>
|
||||
Subdirectory Name <input type="text" name="directory">
|
||||
<input type="submit" value="Create">
|
||||
</form>
|
||||
<li>Choose a folder to copy your data to, then upload your data file (must be in .h5ad format).</li>
|
||||
<br>
|
||||
<form action="{{ url_for('upload_file') }}" method="post" enctype="multipart/form-data">
|
||||
Type in the name of the directory and subdirectory you wish to upload to, i.e. "USER/cells". <input type="text" name="path">
|
||||
<br>
|
||||
File: <input type="file" name="file"><br>
|
||||
<input style="position:relative; top:10px;" type="submit" value="Upload">
|
||||
</form>
|
||||
<br>
|
||||
<li>Take a look at your data using the file crawler link above</li>
|
||||
</ol>
|
||||
{% endif %}
|
||||
|
||||
<br>
|
||||
|
||||
<h1 style="padding-left:35px">
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
<h4>Options</h4>
|
||||
Please choose one of the following, or use the back button:
|
||||
<ul>
|
||||
<li><a href="{{url_for('do_relaunch', path=dataset)}}">
|
||||
<li><a href="{relaunch_url}">
|
||||
Attempt to relaunch the cellxgene server.
|
||||
</a></li>
|
||||
<li><a href="{{ url_for('filecrawl') }}">
|
||||
|
||||
Reference in New Issue
Block a user