Skip to content

Commit 6048882

Browse files
authored
Merge pull request #82 from WHOIGit/dev
0.1.1-alpha
2 parents e7c2191 + 3848359 commit 6048882

File tree

10 files changed

+134
-34
lines changed

10 files changed

+134
-34
lines changed

bin/update.sh

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
3+
SOURCE=$(dirname "${BASH_SOURCE[0]}")
4+
git pull && sh ${SOURCE}/assets.sh && sh ${SOURCE}/migrate.sh
5+

ifcbdb/assets/css/site.css

+18
Original file line numberDiff line numberDiff line change
@@ -169,4 +169,22 @@ div.scale-bar {
169169
background: black;
170170
width: 34px;
171171
height: 5px;
172+
}
173+
174+
[data-toggle="collapse"] .fa:after {
175+
content: "\f056";
176+
}
177+
178+
[data-toggle="collapse"].collapsed .fa:after {
179+
content: "\f055";
180+
}
181+
182+
[data-toggle="collapse"] .fa:before {
183+
content: "Hide Timeline ";
184+
font-family: "Roboto";
185+
}
186+
187+
[data-toggle="collapse"].collapsed .fa:before {
188+
content: "Show Timeline ";
189+
font-family: "Roboto";
172190
}

ifcbdb/assets/js/site.js

+28-2
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,39 @@ function getTimelineConfig() {
8080
return {
8181
responsive: true,
8282
displaylogo: false,
83-
scrollZoom: true
83+
scrollZoom: true,
84+
modeBarButtonsToRemove: [
85+
"sendDataToCloud",
86+
"hoverCompareCartesian",
87+
"hoverClosestCartesian",
88+
"toImage",
89+
"select2d",
90+
"lasso2d",
91+
"toggleSpikelines",
92+
"resetScale2d"
93+
]
8494
};
8595
}
8696

97+
function getTimelineTypeByMetric(metric) {
98+
if (metric == "temperature" || metric == "humidity") {
99+
return {
100+
"type": "scatter",
101+
"mode": "markers"
102+
}
103+
} else {
104+
return {
105+
"type": "bar",
106+
"mode": "markers"
107+
}
108+
}
109+
}
87110
function getTimelineData(data, selectedDate) {
111+
plotlyType = getTimelineTypeByMetric(currentMetric);
112+
88113
var series = {
89-
type: "bar",
114+
type: plotlyType.type,
115+
mode: plotlyType.mode,
90116
x: data["x"],
91117
y: data["y"],
92118
line: {

ifcbdb/dashboard/accession.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ def sync(self):
7474
def add_bin(self, bin, b): # IFCB bin, Bin instance
7575
print('{} checking and processing'.format(b.pid))
7676
# qaqc checks
77-
qc_bad = qc_bad = check_bad(bin)
77+
qc_bad = check_bad(bin)
7878
if qc_bad:
7979
b.qc_bad = True
8080
print('{} raw data is bad'.format(pid))
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Generated by Django 2.1.7 on 2019-05-28 06:47
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('dashboard', '0018_auto_20190508_1659'),
10+
]
11+
12+
operations = [
13+
migrations.AlterField(
14+
model_name='bin',
15+
name='concentration',
16+
field=models.FloatField(default=-9999999),
17+
),
18+
migrations.AlterField(
19+
model_name='bin',
20+
name='humidity',
21+
field=models.FloatField(default=-9999999),
22+
),
23+
migrations.AlterField(
24+
model_name='bin',
25+
name='look_time',
26+
field=models.FloatField(default=-9999999),
27+
),
28+
migrations.AlterField(
29+
model_name='bin',
30+
name='ml_analyzed',
31+
field=models.FloatField(default=-9999999),
32+
),
33+
migrations.AlterField(
34+
model_name='bin',
35+
name='run_time',
36+
field=models.FloatField(default=-9999999),
37+
),
38+
migrations.AlterField(
39+
model_name='bin',
40+
name='temperature',
41+
field=models.FloatField(default=-9999999),
42+
),
43+
]

ifcbdb/dashboard/models.py

+9-5
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import ifcb
2525

26+
from ifcb.data.adc import SCHEMA_VERSION_1
2627
from ifcb.data.stitching import InfilledImages
2728
from ifcb.viz.mosaic import Mosaic
2829
from ifcb.viz.blobs import blob_outline
@@ -47,7 +48,7 @@ class Timeline(object):
4748
"run_time": "Seconds",
4849
"look_time": "Seconds",
4950
"ml_analyzed": "Milliliters",
50-
'concentration': 'Cells / ml',
51+
'concentration': 'ROIs / ml',
5152
'n_triggers': 'Count',
5253
'n_images': 'Count',
5354
}
@@ -292,17 +293,20 @@ def roi_path(self):
292293

293294
# access to images
294295

295-
def images(self):
296-
b = self._get_bin()
297-
if b.schema == 1:
296+
def images(self, bin=None):
297+
if bin is None:
298+
b = self._get_bin()
299+
else:
300+
b = bin
301+
if b.schema == SCHEMA_VERSION_1:
298302
return InfilledImages(b)
299303
else:
300304
return b.images
301305

302306
def image(self, target_number):
303307
b = self._get_bin()
304308
with b.as_single(target_number) as subset:
305-
ii = InfilledImages(subset) # handle old-style data
309+
ii = self.images(subset)
306310
try:
307311
return ii[target_number]
308312
except IndexError as e:

ifcbdb/templates/base.html

+2-6
Original file line numberDiff line numberDiff line change
@@ -119,12 +119,8 @@
119119
</div>
120120
<div class="footer-copyright text-center py-3 stylish-color-dark">
121121
<div>
122-
Version 4.4 - 17 October 2018 -
123-
<a href="#">About</a> |
124-
<a href="https://beagle.whoi.edu/redmine/projects/ifcb-web/wiki" target="_blank">User guide</a> |
125-
<a href="{% url 'secure:login' %}">Log in</a> |
126-
<a href="#">Admin</a> |
127-
<a href="#">API</a>
122+
Version 0.1.1-alpha - 30 May 2019 -
123+
<a href="{% url 'secure:login' %}">Log in</a>
128124
</div>
129125
</div>
130126
</footer>

ifcbdb/templates/dashboard/bin-details.html

+5-3
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</span>
1111
</div>
1212
<div class="pl-3 align-self-center">
13-
<a title="Share link"><span id="share-button" class="h5-responsive fa fa-share-square"></span></a>
13+
<a id="share-button" title="Share This Bin"><span class="h5-responsive fa fa-share-square"></span>&nbsp;Share This Bin</a>
1414
</div>
1515
</div>
1616
<hr class="my-2">
@@ -205,7 +205,7 @@
205205
<div class="modal-dialog" role="document">
206206
<div class="modal-content">
207207
<div class="modal-header">
208-
<h5 class="modal-title" id="exampleModalLabel">Share link</h5>
208+
<h5 class="modal-title" id="exampleModalLabel">Share This Bin</h5>
209209
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
210210
<span aria-hidden="true">&times;</span>
211211
</button>
@@ -464,7 +464,9 @@ <h5 class="modal-title" id="exampleModalLabel">Share link</h5>
464464
});
465465

466466

467-
$("#share-button").click(function () {
467+
$("#share-button").click(function (e) {
468+
e.preventDefault();
469+
468470
$("#share-modal").modal();
469471
$("#share-link").select();
470472
});

ifcbdb/templates/dashboard/dataset-details.html

+18-14
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,17 @@
33
{% endblock %} {% block content %}
44
<div class="row d-flex justify-content-between">
55
<div class="pl-3">
6-
<span class="h3-responsive">{{ dataset.title }}</span>
6+
<span class="h3-responsive">{{ dataset.title }}</span><span><button class="btn btn-link" data-toggle="collapse" data-target=".ts-collapse" aria-expanded="true" aria-controls="ts-data"><i class="fa" aria-hidden="true"></i></button></span>
77
</div>
88
{% if user.is_authenticated %}
99
<div>
1010
<a href="#" class="btn btn-sm btn-primary ml-3">Configure</a>
1111
</div>
1212
{% endif %}
13-
<ul class="nav justify-content-end" id="ts-tabs" role="tablist">
13+
<ul class="nav justify-content-end collapse show ts-collapse" id="ts-tabs" role="tablist">
1414
<li class="nav-item">
1515
<a class="nav-link btn btn-mdb-color btn-sm" id="ts-size-tab" data-toggle="tab" data-metric="size" href="#ts-size"
16-
role="tab" data-target="ts-size" aria-selected="true">Data Size</a>
16+
role="tab" data-target="ts-size" aria-selected="false">Data Size</a>
1717
</li>
1818
<li class="nav-item">
1919
<a class="nav-link btn btn-mdb-color btn-sm" id="ts-temperature-tab" data-toggle="tab" data-metric="temperature" href="#ts-temperature"
@@ -28,8 +28,8 @@
2828
role="tab" data-target="ts-ml-analyzed" aria-selected="false">Volume Analyzed</a>
2929
</li>
3030
<li class="nav-item">
31-
<a class="nav-link btn btn-mdb-color btn-sm" id="ts-concentration-tab" data-toggle="tab" data-metric="concentration" href="#ts-concentration"
32-
role="tab" data-target="ts-concentration" aria-selected="false">Concentration</a>
31+
<a class="nav-link btn btn-mdb-color btn-sm active" id="ts-concentration-tab" data-toggle="tab" data-metric="concentration" href="#ts-concentration"
32+
role="tab" data-target="ts-concentration" aria-selected="true">ROIs / ml</a>
3333
</li>
3434
<li class="nav-item">
3535
<a class="nav-link btn btn-mdb-color btn-sm" id="ts-triggers-tab" data-toggle="tab" data-metric="n-triggers" href="#ts-triggers"
@@ -44,8 +44,8 @@
4444
<hr class="my-2">
4545
<div class="row px-1">
4646
<div class="col-sm-12">
47-
<div class="tab-content" id="ts-data">
48-
<div class="tab-pane show active" id="ts-size" role="tabpanel" aria-labelledby="ts-size-tab">
47+
<div class="tab-content collapse show ts-collapse" id="ts-data">
48+
<div class="tab-pane" id="ts-size" role="tabpanel" aria-labelledby="ts-size-tab">
4949
<div class="ts-plot-container"></div>
5050
</div>
5151
<div class="tab-pane" id="ts-temperature" role="tabpanel" aria-labelledby="ts-temperature-tab">
@@ -57,7 +57,7 @@
5757
<div class="tab-pane" id="ts-ml-analyzed" role="tabpanel" aria-labelledby="ts-ml-analyzed-tab">
5858
<div class="ts-plot-container"></div>
5959
</div>
60-
<div class="tab-pane" id="ts-concentration" role="tabpanel" aria-labelledby="ts-concentration-tab">
60+
<div class="tab-pane show active" id="ts-concentration" role="tabpanel" aria-labelledby="ts-concentration-tab">
6161
<div class="ts-plot-container"></div>
6262
</div>
6363
<div class="tab-pane" id="ts-triggers" role="tabpanel" aria-labelledby="ts-triggers-tab">
@@ -77,7 +77,7 @@
7777
<div class="d-flex flex-row justify-content-between">
7878
<div class="flex-column">
7979
<form class="form-inline">
80-
<a href="#" id="previous-bin" data-bin="" class="btn btn-mdb-color btn-sm"><i class="fas fa-arrow-circle-left fa-1x"></i></a>
80+
<a href="#" id="previous-bin" data-bin="" class="btn btn-mdb-color btn-sm"><i class="fas fa-arrow-circle-left fa-1x"></i>&nbsp;&nbsp;Previous Bin</a>
8181
</form>
8282
</div>
8383
<div class="flex-column align-self-center">
@@ -88,7 +88,7 @@
8888
</div>
8989
<div class="flex-column pt-1 pt-sm-0">
9090
<form class="form-inline">
91-
<a href="#" id="next-bin" data-bin="" class="btn btn-mdb-color btn-sm"><i class="fas fa-arrow-circle-right fa-1x"></i></a>
91+
<a href="#" id="next-bin" data-bin="" class="btn btn-mdb-color btn-sm">Next Bin&nbsp;&nbsp;<i class="fas fa-arrow-circle-right fa-1x"></i></a>
9292
</form>
9393
</div>
9494
</div>
@@ -235,7 +235,7 @@
235235
var currentBinTimestamp = null;
236236
var isBinLoading = false;
237237
var isMosaicLoading = false;
238-
var currentPlotId = "ts-size";
238+
var currentPlotId = "ts-concentration";
239239

240240
function delayedMosaic(page) {
241241
$("#mosaic").hide();
@@ -319,8 +319,12 @@
319319
$("#next-bin").addClass("disabled");
320320

321321
// workaround to prevent accepting clicks on the plotly controls
322-
distanceFromTop = event.pageY - $(container[0]).offset().top;
323-
if (distanceFromTop > 35) {
322+
var offset = $(container[0]).offset();
323+
var distanceFromTop = event.pageY - offset.top;
324+
var margin = container[0]._fullLayout.margin.l;
325+
var rightX = offset.left + $(container[0]).width();
326+
var distanceFromRight = rightX - event.pageX - margin;
327+
if (distanceFromTop > 35 || distanceFromRight > 75) {
324328
changeToClosestBin($(container[0]).data("date"));
325329
}
326330
});
@@ -641,7 +645,7 @@
641645
});
642646

643647
$(function() {
644-
createTimeSeries($("#ts-size .ts-plot-container"), "size");
648+
createTimeSeries($("#ts-concentration .ts-plot-container"), "concentration");
645649

646650
changeBin("{{ bin.pid }}", false);
647651
});

ifcbdb/templates/dashboard/image-details.html

+5-3
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<span class="h3-responsive">{{ bin.pid }}_{{ image_id|stringformat:"05d" }}</span>
1313
</div>
1414
<div class="pl-3 align-self-center">
15-
<a title="Share link"><span id="share-button" class="h5-responsive fa fa-share-square"></span></a>
15+
<a id="share-button" title="Share This Image"><span class="h5-responsive fa fa-share-square"></span>&nbsp;Share This Image</a>
1616
</div>
1717
</div>
1818
<hr class="my-2">
@@ -250,7 +250,7 @@ <h4 class="modal-title w-100 font-weight-bold">Add Tag</h4>
250250
<div class="modal-dialog" role="document">
251251
<div class="modal-content">
252252
<div class="modal-header">
253-
<h5 class="modal-title" id="exampleModalLabel">Share link</h5>
253+
<h5 class="modal-title" id="exampleModalLabel">Share This Image</h5>
254254
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
255255
<span aria-hidden="true">&times;</span>
256256
</button>
@@ -303,7 +303,9 @@ <h5 class="modal-title" id="exampleModalLabel">Share link</h5>
303303
$("#image-outline").height($("#image").height());
304304
});
305305

306-
$("#share-button").click(function () {
306+
$("#share-button").click(function (e) {
307+
e.preventDefault();
308+
307309
$("#share-modal").modal();
308310
$("#share-link").select();
309311
});

0 commit comments

Comments
 (0)