From 682a1bffd4e982b10cb9a245d1f0f994bd9ec504 Mon Sep 17 00:00:00 2001 From: Juan Date: Thu, 26 Jan 2017 21:09:47 -0700 Subject: [PATCH 001/214] Removed UUIDs and security codes to the site's details when the user was not the creator. --- .../dataloaderinterface/device_detail.html | 67 ++++++++++--------- 1 file changed, 36 insertions(+), 31 deletions(-) diff --git a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html index d9d48496..8fd294c5 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html @@ -33,31 +33,34 @@ {% endfor %} {% endif %} -
-
-
- local_offer Registration Token - - Copy -
- -
-
- settings_remote Sampling Feature UUID - - Copy + {% if object.user_id == request.user.id %} +
+
+
+ local_offer Registration Token + + Copy +
+ +
+ +
+ settings_remote Sampling Feature UUID + + Copy +
+
+ {% endif %} -
-
@@ -135,18 +138,20 @@ data-variable-code="{{ result.variable.variable_code }}">
-
- Result UUID - - Copy -
+ {% if object.user_id == request.user.id %} +
+ Result UUID + + Copy +
+ {% endif %}
From 58e55a5420284167f657f01bb42ff71e5127f965 Mon Sep 17 00:00:00 2001 From: mauriel133 Date: Thu, 26 Jan 2017 21:16:10 -0700 Subject: [PATCH 002/214] Box plot styling --- .../static/dataloaderinterface/css/style.css | 5 ++- .../dataloaderinterface/device_detail.html | 35 ++++++++++--------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/dataloaderinterface/static/dataloaderinterface/css/style.css b/src/dataloaderinterface/static/dataloaderinterface/css/style.css index 2a2cd66e..893d09c5 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/css/style.css +++ b/src/dataloaderinterface/static/dataloaderinterface/css/style.css @@ -288,6 +288,7 @@ div.registration-field span.control-field { .variable-name { padding: 8px 20px; + width: calc(100% - 50px); } .variable-data { @@ -562,9 +563,7 @@ footer .separator { cursor: default; } -.plot_box .input-group-copy { - width: calc(100% - 50px); -} + .input-group-copy .material-icons { font-size: 14px; } diff --git a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html index 8fd294c5..f2755e63 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html @@ -138,18 +138,10 @@ data-variable-code="{{ result.variable.variable_code }}">
- {% if object.user_id == request.user.id %} -
- Result UUID - - Copy -
- {% endif %} - +
+ {{ result.variable.variable_name_id }} ({{ result.variable.variable_code }}) +
@@ -159,11 +151,6 @@
-
- {{ result.variable.variable_name_id }} ({{ result.variable.variable_code }}) -
-
@@ -177,6 +164,20 @@
+ +
+ {% if object.user_id == request.user.id %} +
+ Result UUID + + Copy +
+ {% endif %} +
{% endwith %} From 251c5f6cc3792ec001bebac92e9287cb4bb37be3 Mon Sep 17 00:00:00 2001 From: mauriel133 Date: Thu, 26 Jan 2017 21:17:44 -0700 Subject: [PATCH 003/214] Box plot styling --- .../templates/dataloaderinterface/device_detail.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html index f2755e63..241d925c 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html @@ -165,8 +165,8 @@ -
- {% if object.user_id == request.user.id %} + {% if object.user_id == request.user.id %} +
Result UUID Copy
- {% endif %} -
+
+ {% endif %}
{% endwith %} From 2416b1d1b78fab0d55011f472171a26a25c7e53c Mon Sep 17 00:00:00 2001 From: Juan Date: Thu, 26 Jan 2017 23:38:01 -0700 Subject: [PATCH 004/214] Made organization code field unique. --- src/dataloader/models.py | 4 ++-- src/dataloaderinterface/forms.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dataloader/models.py b/src/dataloader/models.py index 1635ef43..1a460c12 100644 --- a/src/dataloader/models.py +++ b/src/dataloader/models.py @@ -407,7 +407,7 @@ class Meta: class Organization(ODM2Model): organization_id = models.AutoField(db_column='organizationid', primary_key=True) organization_type = models.ForeignKey('OrganizationType', db_column='organizationtypecv') - organization_code = models.CharField(db_column='organizationcode', max_length=50) + organization_code = models.CharField(db_column='organizationcode', max_length=50, unique=True) organization_name = models.CharField(db_column='organizationname', max_length=255) organization_description = models.CharField(db_column='organizationdescription', blank=True, max_length=500) organization_link = models.CharField(db_column='organizationlink', blank=True, max_length=255) @@ -447,7 +447,7 @@ def role_status(self): return 'Primary contact' if self.is_primary_organization_contact else 'Secondary contact' def __str__(self): - return '%s (%s) - %s' % (self.person, self.primary_email, self.organization) + return '%s - %s' % (self.person, self.organization) def __repr__(self): return "" % ( diff --git a/src/dataloaderinterface/forms.py b/src/dataloaderinterface/forms.py index 91dd521e..f92921e5 100644 --- a/src/dataloaderinterface/forms.py +++ b/src/dataloaderinterface/forms.py @@ -31,7 +31,7 @@ def save(self, commit=True): person = People.objects.filter(person_first_name=user.first_name, person_last_name=user.last_name).first() or \ People.objects.create(person_first_name=user.first_name, person_last_name=user.last_name) affiliation = Affiliation.objects.filter(person=person, organization=organization).first() or \ - Affiliation.objects.create(person=person, organization=organization, affiliation_start_date=datetime.now()) + Affiliation.objects.create(person=person, organization=organization, affiliation_start_date=datetime.now(), primary_email=user.email) if commit: user.save() From 1f07034333b5661c570bc736673b1f4172173cf1 Mon Sep 17 00:00:00 2001 From: Juan Date: Thu, 26 Jan 2017 23:50:06 -0700 Subject: [PATCH 005/214] Fixed bug when new organization is created, but not added to the selection options. --- .../static/dataloaderinterface/js/user-form.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dataloaderinterface/static/dataloaderinterface/js/user-form.js b/src/dataloaderinterface/static/dataloaderinterface/js/user-form.js index c68a93eb..bca09039 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/js/user-form.js +++ b/src/dataloaderinterface/static/dataloaderinterface/js/user-form.js @@ -46,7 +46,7 @@ $(document).ready(function() { if (xhr.status == 201) { // organization created var newOption = $(''); - $('.organization-fields select[name="organization"]').append(newOption).val(data.organization_id); + $('.user-fields select[name="organization"]').append(newOption).val(data.organization_id); $('#organization-dialog').modal('toggle'); } else if (xhr.status == 206) { // organization form error From 777ae829abb68c20c878bd424316a37de00f1ba3 Mon Sep 17 00:00:00 2001 From: Juan Date: Fri, 27 Jan 2017 00:03:44 -0700 Subject: [PATCH 006/214] Fixed organization type select bug. --- .../static/dataloaderinterface/js/user-form.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/dataloaderinterface/static/dataloaderinterface/js/user-form.js b/src/dataloaderinterface/static/dataloaderinterface/js/user-form.js index bca09039..b3e2b2b8 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/js/user-form.js +++ b/src/dataloaderinterface/static/dataloaderinterface/js/user-form.js @@ -5,6 +5,7 @@ function cleanOrganizationForm() { $('.organization-fields input, .organization-fields select').val(''); + initializeSelect($('.organization-fields select')); } function generateErrorList(errors) { From 46db7f8fbd98ec553827a1ddd2283a1f1a5318ad Mon Sep 17 00:00:00 2001 From: Juan Date: Fri, 27 Jan 2017 01:36:34 -0700 Subject: [PATCH 007/214] Fixed bug in the site registration relationship with the user. --- src/dataloaderinterface/models.py | 1 + src/dataloaderinterface/views.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/dataloaderinterface/models.py b/src/dataloaderinterface/models.py index 3304f09f..985ea3f1 100644 --- a/src/dataloaderinterface/models.py +++ b/src/dataloaderinterface/models.py @@ -30,6 +30,7 @@ def __str__(self): class ODM2User(models.Model): + # user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True) user = models.OneToOneField(User, on_delete=models.CASCADE) affiliation_id = models.IntegerField() diff --git a/src/dataloaderinterface/views.py b/src/dataloaderinterface/views.py index 9b6f5388..0bfc0e9f 100644 --- a/src/dataloaderinterface/views.py +++ b/src/dataloaderinterface/views.py @@ -70,7 +70,7 @@ class DevicesListView(LoginRequiredMixin, ListView): template_name = 'dataloaderinterface/my-sites.html' def get_queryset(self): - return super(DevicesListView, self).get_queryset().filter(user_id=self.request.user.id) + return super(DevicesListView, self).get_queryset().filter(user_id=self.request.user.odm2user.pk) class BrowseSitesListView(LoginRequiredMixin, ListView): @@ -186,7 +186,7 @@ def post(self, request, *args, **kwargs): # purchase date: definitely not relevant. registration_form.instance.deployment_sampling_feature_uuid = sampling_feature.sampling_feature_uuid - registration_form.instance.user_id = request.user.id + registration_form.instance.user_id = request.user.odm2user.pk registration_form.instance.authentication_token = uuid4() registration_form.instance.save() return self.form_valid(registration_form) From 752786ad8df53195678d517d44c152f27ae5d8a7 Mon Sep 17 00:00:00 2001 From: Juan Date: Fri, 27 Jan 2017 02:17:14 -0700 Subject: [PATCH 008/214] Added placeholders for form selects. --- src/dataloaderinterface/forms.py | 31 ++++++++++++++++--- .../static/dataloaderinterface/css/style.css | 16 +++++----- .../dataloaderinterface/js/common-forms.js | 14 ++++++--- .../device_registration.html | 25 ++++++++------- .../templates/registration/register.html | 11 ++++--- 5 files changed, 63 insertions(+), 34 deletions(-) diff --git a/src/dataloaderinterface/forms.py b/src/dataloaderinterface/forms.py index f92921e5..7ca34377 100644 --- a/src/dataloaderinterface/forms.py +++ b/src/dataloaderinterface/forms.py @@ -19,7 +19,7 @@ class UserRegistrationForm(UserCreationForm): first_name = forms.CharField(required=True, max_length=50) last_name = forms.CharField(required=True, max_length=50) email = forms.EmailField(required=True, max_length=254) - organization = forms.ModelChoiceField(queryset=Organization.objects.all().exclude(organization_type__in=['Vendor', 'Manufacturer']), required=False) + organization = forms.ModelChoiceField(queryset=Organization.objects.all().exclude(organization_type__in=['Vendor', 'Manufacturer']), required=False, help_text='Choose your affiliated organization') def save(self, commit=True): user = super(UserRegistrationForm, self).save(commit=False) @@ -44,10 +44,15 @@ def save(self, commit=True): class OrganizationForm(forms.ModelForm): use_required_attribute = False - organization_type = forms.ModelChoiceField(queryset=OrganizationType.objects.all().exclude(name__in=['Vendor', 'Manufacturer']), required=False) + organization_type = forms.ModelChoiceField(queryset=OrganizationType.objects.all().exclude(name__in=['Vendor', 'Manufacturer']), required=False, help_text='Choose the type of organization') class Meta: model = Organization + help_texts = { + 'organization_code': 'Enter an organization code', + 'organization_name': 'Enter the name of your organization', + 'organization_description': 'Enter a description for your organization' + } fields = [ 'organization_code', 'organization_name', @@ -56,11 +61,18 @@ class Meta: ] + class SamplingFeatureForm(forms.ModelForm): use_required_attribute = False class Meta: model = SamplingFeature + help_texts = { + 'sampling_feature_code': 'Enter a Site code', + 'sampling_feature_name': 'Enter a Site name', + 'elevation_m': 'Enter the elevation of the Site', + 'elevation_datum': 'Enter the datum for the site\'s elevation' + } fields = [ 'sampling_feature_code', 'sampling_feature_name', @@ -79,6 +91,11 @@ class SiteForm(forms.ModelForm): class Meta: model = Site + help_texts = { + 'site_type': 'Enter the type of Site', + 'latitude': 'Enter latitude of the Site', + 'longitude': 'Enter the longitude of the Site', + } fields = [ 'site_type', 'latitude', @@ -91,15 +108,21 @@ def __init__(self, *args, **kwargs): super(ResultForm, self).__init__(*args, **kwargs) self.empty_permitted = False - equipment_model = forms.ModelChoiceField(queryset=EquipmentModel.objects.all()) + equipment_model = forms.ModelChoiceField(queryset=EquipmentModel.objects.all(), help_text='Choose the model of your sensor') sampled_medium = forms.ModelChoiceField(queryset=Medium.objects.filter( Q(pk='Air') | Q(pk='Soil') | Q(pk='Liquid aqueous') - )) + ), help_text='Choose the sampled medium') class Meta: model = Result + help_texts = { + 'equipment_model': 'Choose the model of your sensor', + 'variable': 'Choose the measured variable', + 'unit': 'Choose the measured units', + 'sampled_medium': 'Choose the sampled medium' + } fields = [ 'equipment_model', 'variable', diff --git a/src/dataloaderinterface/static/dataloaderinterface/css/style.css b/src/dataloaderinterface/static/dataloaderinterface/css/style.css index 893d09c5..4aa927d4 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/css/style.css +++ b/src/dataloaderinterface/static/dataloaderinterface/css/style.css @@ -418,6 +418,10 @@ div.form-field[data-field="elevation_m"], div.form-field[data-field="elevation_d order: 2; } +.select2-selection__rendered { + font-family: Roboto, Helvetica, Arial, sans-serif; +} + div.form-field[data-field="affiliation"] .select2-selection { border: none; border-radius: 0; @@ -425,15 +429,9 @@ div.form-field[data-field="affiliation"] .select2-selection { font-size: 2em; } -div.form-field[data-field="affiliation"] .select2-selection__arrow b { - border-width: 8px 6px; - margin-left: -14px !important; - margin-top: 9px; -} - -div.form-field[data-field="affiliation"] .select2-container--bootstrap.select2-container--open .select2-selection__arrow b { - border-width: 8px 6px; - margin-top: 1px; +span.select2-selection__clear { + font-size: 1.4em; + line-height: 1.1em; } span.name-dropdown { diff --git a/src/dataloaderinterface/static/dataloaderinterface/js/common-forms.js b/src/dataloaderinterface/static/dataloaderinterface/js/common-forms.js index 06585424..c4b21b4a 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/js/common-forms.js +++ b/src/dataloaderinterface/static/dataloaderinterface/js/common-forms.js @@ -4,11 +4,15 @@ function initializeSelect(select) { setTimeout(function () { - select.select2({ - theme: "bootstrap", - containerCssClass : "input-sm", - dropdownAutoWidth: true, - width: 'auto' + select.each(function(index, selectElement) { + $(selectElement).select2({ + theme: "bootstrap", + containerCssClass : "input-sm", + dropdownAutoWidth: true, + width: 'auto', + allowClear: true, + placeholder: $(selectElement).attr('placeholder') + }); }); }); } diff --git a/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html b/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html index 83fbb963..f561bca3 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html @@ -34,17 +34,19 @@ {% for field in sampling_feature_form %}
- - {{ field|add_class:"form-control input-sm" }} + + {% with "placeholder:"|add:field.help_text as placeholder %} + {{ field|add_class:"form-control input-sm"|attr:placeholder }} + {% endwith %}
{% endfor %} {% for field in site_form %}
- - {{ field|add_class:"form-control input-sm" }} + + {% with "placeholder:"|add:field.help_text as placeholder %} + {{ field|add_class:"form-control input-sm"|attr:placeholder }} + {% endwith %}
{% endfor %} @@ -94,9 +96,7 @@ {% for field in result_form %} {{ field.data }} - + {% endfor %} @@ -174,9 +174,10 @@

Add Sensor

{% for field in results_formset.empty_form %}
- {{ field.errors }} - {{ field|add_class:"form-control input-sm" }} + {{ field.errors }} + {% with "placeholder:"|add:field.help_text as placeholder %} + {{ field|add_class:"form-control input-sm"|attr:placeholder }} + {% endwith %}
{% endfor %}
diff --git a/src/dataloaderinterface/templates/registration/register.html b/src/dataloaderinterface/templates/registration/register.html index 9e7beee6..645a4a7a 100644 --- a/src/dataloaderinterface/templates/registration/register.html +++ b/src/dataloaderinterface/templates/registration/register.html @@ -89,7 +89,9 @@

Sign Up

- {{ form.organization|add_class:"form-control input-sm select2-hidden-accessible"|attr:"placeholder: Choose an organization" }} + {% with "placeholder:"|add:form.organization.help_text as placeholder %} + {{ form.organization|add_class:"form-control input-sm select2-hidden-accessible"|attr:placeholder }} + {% endwith %} {{ form.organization.errors }}
@@ -132,9 +134,10 @@

New Organization

{% for field in organization_form %}
- {{ field.errors }} - {{ field|add_class:"form-control input-sm" }} + {{ field.errors }} + {% with "placeholder:"|add:field.help_text as placeholder %} + {{ field|add_class:"form-control input-sm"|attr:placeholder }} + {% endwith %}
{% endfor %}
From d3cee2dc3bea8d5f61294375f4854420ac25a628 Mon Sep 17 00:00:00 2001 From: mauriel133 Date: Mon, 30 Jan 2017 12:13:45 -0700 Subject: [PATCH 009/214] Minor style changes --- .../static/dataloaderinterface/css/style.css | 5 ++++- .../templates/dataloaderinterface/browse-sites.html | 13 ++++++++++--- .../templates/dataloaderinterface/index.html | 2 +- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/dataloaderinterface/static/dataloaderinterface/css/style.css b/src/dataloaderinterface/static/dataloaderinterface/css/style.css index 893d09c5..d51b641f 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/css/style.css +++ b/src/dataloaderinterface/static/dataloaderinterface/css/style.css @@ -111,7 +111,6 @@ button.navbar-toggle { div.map-info { margin: 5px; - top: 5px !important; left: 0 !important; box-shadow: rgba(0, 0, 0, 0.298039) 0 1px 4px -1px; background-color: rgba(255, 255, 255, .95); @@ -684,6 +683,10 @@ dialog#data-table-dialog .mdl-dialog__content { margin-bottom: 50px; } +#how-it-works .card { + height: 300px; +} + .card h4 { font-size: 18px; font-family: "Roboto", "Helvetica", "Arial", sans-serif; diff --git a/src/dataloaderinterface/templates/dataloaderinterface/browse-sites.html b/src/dataloaderinterface/templates/dataloaderinterface/browse-sites.html index 1f582b13..de7e41c7 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/browse-sites.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/browse-sites.html @@ -6,9 +6,16 @@
-
Browse Data Collection Sites
- - +
+ Browse Data Collection Sites  + +
+ +
+
+ Browse all sites that have been registered in the database by all users. Clicking on a site shows it's details and provides a link to view the data collected at that site. +
diff --git a/src/dataloaderinterface/templates/dataloaderinterface/index.html b/src/dataloaderinterface/templates/dataloaderinterface/index.html index 1c05e9a8..86154485 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/index.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/index.html @@ -31,7 +31,7 @@

SIGN UP

How it works
-
+

1

From 68c44385031faeabdb7d534eff836c76575e1aab Mon Sep 17 00:00:00 2001 From: Juan Date: Tue, 31 Jan 2017 14:13:02 -0700 Subject: [PATCH 010/214] Fixed minor bug. Latitude and Longitude were keeping the error messages after adding a value through the map. --- .../static/dataloaderinterface/js/device-form.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dataloaderinterface/static/dataloaderinterface/js/device-form.js b/src/dataloaderinterface/static/dataloaderinterface/js/device-form.js index fa302833..b136b9ed 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/js/device-form.js +++ b/src/dataloaderinterface/static/dataloaderinterface/js/device-form.js @@ -5,15 +5,15 @@ function updateSitePosition(map, position) { map.panTo(position); - $('input[name="latitude"]').val(Math.round(position.lat() * 100000) / 100000); - $('input[name="longitude"]').val(Math.round(position.lng() * 100000) / 100000); + $('input[name="latitude"]').val(Math.round(position.lat() * 100000) / 100000).trigger('keypress'); + $('input[name="longitude"]').val(Math.round(position.lng() * 100000) / 100000).trigger('keypress'); } function updateSiteElevation(position) { var elevator = new google.maps.ElevationService(); elevator.getElevationForLocations({'locations':[position]}, function(results, status) { if (status == google.maps.ElevationStatus.OK && results[0]) { - $('input[name="elevation_m"]').val(Math.round(results[0].elevation)); + $('input[name="elevation_m"]').val(Math.round(results[0].elevation)).trigger('keypress'); } }); } From 2e2f440d3477afc249507d5ea1222aad47c29d29 Mon Sep 17 00:00:00 2001 From: Juan Date: Wed, 1 Feb 2017 15:56:31 -0700 Subject: [PATCH 011/214] - Removed Datatables. - Fixed issue with getting the security token and result uuids. - Added message when there's no data. --- .../dataloaderinterface/js/device-detail.js | 55 ++++++------- .../dataloaderinterface/device_detail.html | 79 ++++++++++--------- 2 files changed, 65 insertions(+), 69 deletions(-) diff --git a/src/dataloaderinterface/static/dataloaderinterface/js/device-detail.js b/src/dataloaderinterface/static/dataloaderinterface/js/device-detail.js index 6289cdb2..c08b95b1 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/js/device-detail.js +++ b/src/dataloaderinterface/static/dataloaderinterface/js/device-detail.js @@ -44,7 +44,7 @@ function initMap() { function plotValues(result_id, values) { var plotBox = $('div.plot_box[data-result-id="' + result_id + '"] div.graph-container'); - var margin = {top: 0, right: 0, bottom: 0, left: 0}; + var margin = { top: 5, right: 1, bottom: 5, left: 1 }; var width = plotBox.width() - margin.left - margin.right; var height = plotBox.height() - margin.top - margin.bottom; @@ -55,7 +55,7 @@ function plotValues(result_id, values) { return d.index; })); yAxis.domain(d3.extent(values, function (d) { - return parseFloat(d.value); + return d.value; })); var line = d3.line() @@ -74,52 +74,41 @@ function plotValues(result_id, values) { svg.append("path").data([values]).attr("class", "line").attr("d", line); } -function drawSparklinePlots(tableData) { +function drawSparklinePlots(timeSeriesData) { $('div.graph-container').empty(); - for (var index = 0; index < tableData.length; index++) { - plotValues(tableData[index]['id'], tableData[index]['data']); + for (var index = 0; index < timeSeriesData.length; index++) { + var timeSeries = timeSeriesData[index]; + if (timeSeries['recent-values'].length === 0) { + continue; + } + plotValues(timeSeries['id'], timeSeries['recent-values']); } } -function initializeTable(table) { - return table.dataTable({ - info: false, - ordering: true, - paging: false, - searching: false, - scrollY: '700', - scrollCollapse: true - }); +function fillValueTables(tables, data) { + for (var index = 0; index < data.length; index++) { + var result = data[index]; + var table = tables.filter('[data-result-id=' + result.id + ' ]'); + var rows = result['recent-values'].map(function(dataValue) { + return $("" + dataValue.timestamp + "" + dataValue.value + ""); + }); + table.append(rows); + } } $(document).ready(function() { $('nav .menu-sites-list').addClass('active'); var resizeTimer; - var tablesData = []; - var plotBoxes = $('div.plot_box'); - - var tables = initializeTable($('table.data-values')); - - for (var index = 0; index < tables.length; index++) { - var table = $(tables.get(index)); - tablesData[index] = { - table: table, - id: table.data('result-id'), - data: tables.api().table(index).data().map(function(data, index) { - return { index: index, value: data[1] } - }) - } - } - tables.api().destroy(); + var timeSeriesData = JSON.parse(document.getElementById('sensors-data').innerHTML); + fillValueTables($('table.data-values'), timeSeriesData); $(window).on('resize', function(event) { clearTimeout(resizeTimer); resizeTimer = setTimeout(function() { - drawSparklinePlots(tablesData); + drawSparklinePlots(timeSeriesData); }, 500); }); - drawSparklinePlots(tablesData); - plotBoxes.first().trigger('click'); + drawSparklinePlots(timeSeriesData); }); diff --git a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html index 241d925c..00979208 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html @@ -3,9 +3,9 @@ {% block styles %} {{ block.super }} - - +{# #} +{# #} {% endblock %} @@ -34,7 +34,7 @@ {% endif %} - {% if object.user_id == request.user.id %} + {% if object.user_id == request.user.odm2user.id %}
@@ -131,7 +131,7 @@
{% for feature_action in feature_actions %} - {% with feature_action.results.all.0 as result %} + {% with feature_action.results.first as result %}
- - - - + {% with result.timeseriesresult.values.recent.last as latest_value %} + {% if latest_value %} + + + + + {% else %} + + {% endif %} + {% endwith %}
-
-
{{ result.timeseriesresult.values.last.data_value|floatformat:-3 }}
-
{{ result.unit.unit_abbreviation }}
-
-
-
-
+
+
{{ result.timeseriesresult.values.last.data_value|floatformat:-3 }}
+
{{ result.unit.unit_abbreviation }}
+
+
+
+
NOTHING TO LOOK AT HERE!
- {% if object.user_id == request.user.id %} + {% if object.user_id == request.user.odm2user.id %}
Result UUID @@ -196,7 +202,7 @@
-

Temperature (Mayfly-Temp)

+

@@ -208,23 +214,12 @@

Temperature (Mayfly-Temp)

{% for feature_action in feature_actions %} {% with feature_action.results.first as result %} - +
- - - - + - - - {% for series_value in result.timeseriesresult.values.recent %} - - - - - {% endfor %} - +
TimestampValue
TimestampValue
{{ series_value.value_datetime }}{{ series_value.data_value }}
{% endwith %} {% endfor %} @@ -235,15 +230,27 @@

Temperature (Mayfly-Temp)

+ + {% endblock %} {% block scripts %} {{ block.super }} - +{# #} - + {% endblock %} From 42d5adbd0bee5ef55d19ea49dcca71eef861835f Mon Sep 17 00:00:00 2001 From: Juan Date: Thu, 2 Feb 2017 14:03:52 -0700 Subject: [PATCH 012/214] Removed message when there no data. --- .../templates/dataloaderinterface/device_detail.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html index 00979208..f7d9cc1f 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html @@ -153,7 +153,7 @@ {% with result.timeseriesresult.values.recent.last as latest_value %} - {% if latest_value %} +{# {% if latest_value %}#} - {% else %} - - {% endif %} +{# {% else %}#} +{# #} +{# {% endif %}#} {% endwith %}
@@ -165,9 +165,9 @@
NOTHING TO LOOK AT HERE!
NOTHING TO LOOK AT HERE!
From 5df9e511c3b1bec588fb877d342ee284e4cf44e6 Mon Sep 17 00:00:00 2001 From: mauriel133 Date: Tue, 7 Feb 2017 10:46:39 -0700 Subject: [PATCH 013/214] Removed datatables Measurements table overflow --- .../static/dataloaderinterface/css/style.css | 17 +++++------------ .../dataloaderinterface/js/device-detail.js | 2 +- .../dataloaderinterface/device_detail.html | 5 ++--- .../device_registration.html | 1 - 4 files changed, 8 insertions(+), 17 deletions(-) diff --git a/src/dataloaderinterface/static/dataloaderinterface/css/style.css b/src/dataloaderinterface/static/dataloaderinterface/css/style.css index 20d785c9..624272c2 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/css/style.css +++ b/src/dataloaderinterface/static/dataloaderinterface/css/style.css @@ -280,6 +280,11 @@ div.registration-field span.control-field { cursor: pointer; } +.measurements-table { + max-height: 350px; + overflow: auto; +} + .variable-description { width: 120px; padding: 20px; @@ -499,18 +504,6 @@ ul.errorlist { min-height: 80px; } -/*DATATABLES STYLING*/ -table.data-values, table.dataTable { - display: table; !important -} - -table.dataTable { - margin-bottom: 0; -} - -table.dataTable.table-bordered > thead > tr > th { - border-bottom-width: 1px; -} /*FOOTER STYLING*/ footer { background-color: #353535; diff --git a/src/dataloaderinterface/static/dataloaderinterface/js/device-detail.js b/src/dataloaderinterface/static/dataloaderinterface/js/device-detail.js index c08b95b1..e346d5d6 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/js/device-detail.js +++ b/src/dataloaderinterface/static/dataloaderinterface/js/device-detail.js @@ -90,7 +90,7 @@ function fillValueTables(tables, data) { var result = data[index]; var table = tables.filter('[data-result-id=' + result.id + ' ]'); var rows = result['recent-values'].map(function(dataValue) { - return $("" + dataValue.timestamp + "" + dataValue.value + ""); + return $("" + dataValue.timestamp + "" + dataValue.value + ""); }); table.append(rows); } diff --git a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html index f7d9cc1f..bb9b6078 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/device_detail.html @@ -211,13 +211,12 @@

{# Download Raw Data#} {# #} - {% for feature_action in feature_actions %} {% with feature_action.results.first as result %} - - +
TimestampValue
TimestampValue
diff --git a/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html b/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html index f561bca3..c227b648 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html @@ -240,7 +240,6 @@ {% block scripts %} {{ block.super }} - From b54f90a3c7e327214775e7c9e1beb07470bd524d Mon Sep 17 00:00:00 2001 From: mauriel133 Date: Tue, 7 Feb 2017 11:12:07 -0700 Subject: [PATCH 014/214] Form help text --- .../static/dataloaderinterface/css/style.css | 5 +++++ .../static/dataloaderinterface/js/device-form.js | 13 ++----------- .../dataloaderinterface/device_registration.html | 4 ++++ 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/dataloaderinterface/static/dataloaderinterface/css/style.css b/src/dataloaderinterface/static/dataloaderinterface/css/style.css index 624272c2..d8d73e6c 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/css/style.css +++ b/src/dataloaderinterface/static/dataloaderinterface/css/style.css @@ -276,6 +276,11 @@ div.registration-field span.control-field { border-top: 0; } +.help-icon { + font-size: 18px; + line-height: 0; +} + .table-trigger { cursor: pointer; } diff --git a/src/dataloaderinterface/static/dataloaderinterface/js/device-form.js b/src/dataloaderinterface/static/dataloaderinterface/js/device-form.js index b136b9ed..fed5257e 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/js/device-form.js +++ b/src/dataloaderinterface/static/dataloaderinterface/js/device-form.js @@ -235,7 +235,7 @@ function initializeResultsForm() { updateRowData(newRow); bindResultEditEvent(newRow); - $('div.results-table table').DataTable().row.add(newRow).draw(); + $('div.results-table table').append(newRow); $('#result-dialog').modal('toggle'); } else if (xhr.status == 206) { @@ -321,15 +321,6 @@ $(document).ready(function() { initializeResultsForm(); - $('table.sensors').dataTable({ - info: false, - ordering: false, - paging: false, - searching: false, - scrollY: '100%', - scrollCollapse: true - }); - $('#confirm-delete').on('show.bs.modal', function(event) { var sensor = $(event.relatedTarget).parents('tr.result-form'); $(event.target).data('to-delete', sensor); @@ -342,7 +333,7 @@ $(document).ready(function() { var totalForms = $('input[name="form-TOTAL_FORMS"]'); totalForms.val(totalForms.val() - 1); - $('div.results-table table').DataTable().row(sensor).remove().draw(); + // $('div.results-table table').DataTable().row(sensor).remove().draw(); dialog.modal('toggle'); }); }); diff --git a/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html b/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html index c227b648..8d7fe808 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/device_registration.html @@ -35,6 +35,10 @@
+ help +
+ Enter a brief and unique text string to identify your site (e.g., "Del_Phil"). +
{% with "placeholder:"|add:field.help_text as placeholder %} {{ field|add_class:"form-control input-sm"|attr:placeholder }} {% endwith %} From 99c6db90db8e70c22ab790458b236a97f6d2542f Mon Sep 17 00:00:00 2001 From: mauriel133 Date: Tue, 7 Feb 2017 11:40:27 -0700 Subject: [PATCH 015/214] Register a site button --- .../static/dataloaderinterface/css/style.css | 4 +++ .../templates/dataloaderinterface/base.html | 1 - .../dataloaderinterface/my-sites.html | 24 +++++-------- ...gistration.html => site_registration.html} | 34 +++++++++---------- src/dataloaderinterface/views.py | 2 +- 5 files changed, 29 insertions(+), 36 deletions(-) rename src/dataloaderinterface/templates/dataloaderinterface/{device_registration.html => site_registration.html} (92%) diff --git a/src/dataloaderinterface/static/dataloaderinterface/css/style.css b/src/dataloaderinterface/static/dataloaderinterface/css/style.css index d8d73e6c..5d88e3ce 100644 --- a/src/dataloaderinterface/static/dataloaderinterface/css/style.css +++ b/src/dataloaderinterface/static/dataloaderinterface/css/style.css @@ -281,6 +281,10 @@ div.registration-field span.control-field { line-height: 0; } +.button-link:hover { + text-decoration: none; +} + .table-trigger { cursor: pointer; } diff --git a/src/dataloaderinterface/templates/dataloaderinterface/base.html b/src/dataloaderinterface/templates/dataloaderinterface/base.html index adb0d8ca..f4934766 100644 --- a/src/dataloaderinterface/templates/dataloaderinterface/base.html +++ b/src/dataloaderinterface/templates/dataloaderinterface/base.html @@ -56,7 +56,6 @@