Commit ce6749f2 authored by Luis Dominguez's avatar Luis Dominguez

Merge branch 'dev' of gitlab.geoint.mx:mario.chirinos/GeoInt_SIDT into dev

parents 923772fd 10c2be2e
...@@ -127,7 +127,8 @@ AUTH_PASSWORD_VALIDATORS = [ ...@@ -127,7 +127,8 @@ AUTH_PASSWORD_VALIDATORS = [
LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC' #TIME_ZONE = 'UTC'
TIME_ZONE = 'America/Mexico_City'
USE_I18N = True USE_I18N = True
......
...@@ -251,7 +251,8 @@ ...@@ -251,7 +251,8 @@
<div class="chart "> <div class="chart ">
<!-- Sales Chart Canvas --> <!-- Sales Chart Canvas -->
<canvas id="salesChart" style="height: 142px; width: 814px;" width="814" height="170"></canvas> <canvas id="salesChart" style="height: 142px; width: 814px;" width="814"
height="170"></canvas>
</div> </div>
<!-- /.chart-responsive --> <!-- /.chart-responsive -->
</div> </div>
...@@ -330,8 +331,11 @@ ...@@ -330,8 +331,11 @@
<div class="col-md-12"> <div class="col-md-12">
<div class="box box-success"> <div class="box box-success">
<div class="box-header with-border"> <div class="box-header with-border">
<h3 class="box-title" id="purchases_in">Purchases Per Month</h3> {% if request.user.username == "demo" %}
<h3 class="box-title" id="purchases_in">Reports Per Month</h3>
{% else %}
<h3 class="box-title" id="purchases_in">Purchases Per Month</h3>
{% endif %}
<div class="box-tools pull-right"> <div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i <button type="button" class="btn btn-box-tool" data-widget="collapse"><i
class="fa fa-minus"></i> class="fa fa-minus"></i>
...@@ -505,7 +509,11 @@ ...@@ -505,7 +509,11 @@
var label = myChart.data.labels[firstPoint._index]; var label = myChart.data.labels[firstPoint._index];
//if (!firstPoint) return; //if (!firstPoint) return;
$('#purchases_in').empty(); $('#purchases_in').empty();
$('#purchases_in').append("Purchases in " + label); {% if request.user.username == "demo" %}
$('#purchases_in').append("Reports in " + label);
{% else %}
$('#purchases_in').append("Reports in " + label);
{% endif %}
$.ajax({ $.ajax({
...@@ -514,7 +522,7 @@ ...@@ -514,7 +522,7 @@
data: {'title': label}, data: {'title': label},
url: '../administration/ws/report_table', url: '../administration/ws/report_table',
success: function (data) { success: function (data) {
console.log("hola"); console.log("hola");
$('#mostrar').empty(); $('#mostrar').empty();
$('#mostrar').append("<table class=\"table table-hover\" id=\"example\">" + $('#mostrar').append("<table class=\"table table-hover\" id=\"example\">" +
...@@ -523,7 +531,7 @@ ...@@ -523,7 +531,7 @@
"<th class=\"text-center\">User ID</th>" + "<th class=\"text-center\">User ID</th>" +
"<th class=\"text-center\">User</th>" + "<th class=\"text-center\">User</th>" +
"<th class=\"text-center\">E-Mail</th>" + "<th class=\"text-center\">E-Mail</th>" +
"<th class=\"text-center\">Purchases</th>" + "<th class=\"text-center\">Concluded</th>" +
//"<th class=\"text-center\">Storage</th>" + //"<th class=\"text-center\">Storage</th>" +
"<th class=\"text-center\">Downloads in process</th>" + "<th class=\"text-center\">Downloads in process</th>" +
"</tr>" + "</tr>" +
......
...@@ -13,7 +13,7 @@ from catalog.models import Platform ...@@ -13,7 +13,7 @@ from catalog.models import Platform
#admin.site.register(Publisher) #admin.site.register(Publisher)
class ProcessAdmin(admin.ModelAdmin): class ProcessAdmin(admin.ModelAdmin):
list_display = ('name', 'platform', 'productLevel') list_display = ('name', 'platform', 'productLevel','description','command')
admin.site.register(Process, ProcessAdmin) admin.site.register(Process, ProcessAdmin)
......
...@@ -12,10 +12,10 @@ from .widgets import FengyuanChenDatePickerInput ...@@ -12,10 +12,10 @@ from .widgets import FengyuanChenDatePickerInput
all_process = Process.objects.filter(status=True) all_process = Process.objects.filter(status=True)
platforms = [] platforms = [[-1,'Select the search process']]
for each_process in all_process: for each_process in all_process:
platforms.append((each_process.platform_id,each_process.name)) platforms.append((each_process.id,each_process.name))
#ALOS, A3, AIRSAR, AS, ERS-1, E1, ERS-2, E2, JERS-1, J1, RADARSAT-1, R1, SEASAT, SS, Sentinel-1A, SA, Sentinel-1B, SB, SMAP, SP, UAVSAR, UA. #ALOS, A3, AIRSAR, AS, ERS-1, E1, ERS-2, E2, JERS-1, J1, RADARSAT-1, R1, SEASAT, SS, Sentinel-1A, SA, Sentinel-1B, SB, SMAP, SP, UAVSAR, UA.
......
...@@ -12,18 +12,18 @@ class Command(BaseCommand): ...@@ -12,18 +12,18 @@ class Command(BaseCommand):
pList = Polygon.objects.all() pList = Polygon.objects.all()
state_parser = { state_parser = {
'01': "Aguascalientes", '02': "Baja California", '03': "Baja California Sur", '04': "Campeche", '01': "Aguascalientes", '02': "Baja California", '03': "Baja California Sur", '04': "Campeche",
'05': "Coahuila", '06': "Colima", '07': "Chiapas", '08': "Chihuahua", '05': "Coahuila de Zaragoza", '06': "Colima", '07': "Chiapas", '08': "Chihuahua",
'09': "Ciudad de México",'10': "Durango", '11': "Guanajuato", '12': "Guerrero", '09': "Ciudad de México", '10': "Durango", '11': "Guanajuato", '12': "Guerrero",
'13': "Hidalgo", '14': "Jalisco", '15': "México", '16': "Michoacán", '13': "Hidalgo", '14': "Jalisco", '15': "México", '16': "Michoacán de Ocampo",
'17': "Morelos", '18': "Nayarit", '19': "Nuevo León", '20': "Oaxaca", '17': "Morelos", '18': "Nayarit", '19': "Nuevo León", '20': "Oaxaca",
'21': "Puebla", '22': "Querétaro", '23': "Quintana Roo", '24': "San Luis Potosí", '21': "Puebla", '22': "Querétaro", '23': "Quintana Roo", '24': "San Luis Potosí",
'25': "Sinaloa", '26': "Sonora", '27': "Tabasco", '28': "Tamaulipas", '25': "Sinaloa", '26': "Sonora", '27': "Tabasco", '28': "Tamaulipas",
'29': "Tlaxcala", '30': "Veracruz", '31': "Yucatán", '32': "Zacatecas" '29': "Tlaxcala", '30': "Veracruz de Ignacio de la Llave", '31': "Yucatán", '32': "Zacatecas"
} }
for p in pList: for p in pList:
j = json.loads(p.json_info) j = json.loads(p.json_info)
j['properties']['ENT_NAME'] = state_parser[j['properties']['CVE_ENT']] j['properties']['ENT_NAME'] = state_parser[j['properties']['CVE_ENT']]
p.json_info = json.dumps(j, ensure_ascii=True) p.json_info = json.dumps(j, ensure_ascii=True)
p.save() p.save()
\ No newline at end of file
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
from django.core.management.base import BaseCommand, CommandError from django.core.management.base import BaseCommand, CommandError
from catalog.models import Polygon from catalog.models import Polygon
import json, unicodedata import json, unicodedata
from shapely.geometry import shape
class Command(BaseCommand): class Command(BaseCommand):
...@@ -29,6 +30,17 @@ class Command(BaseCommand): ...@@ -29,6 +30,17 @@ class Command(BaseCommand):
## base geojson files path ## base geojson files path
base_path = options['geojson_path'][0] base_path = options['geojson_path'][0]
states_names = {
'01': "Aguascalientes", '02': "Baja California", '03': "Baja California Sur", '04': "Campeche",
'05': "Coahuila de Zaragoza", '06': "Colima", '07': "Chiapas", '08': "Chihuahua",
'09': "Ciudad de México", '10': "Durango", '11': "Guanajuato", '12': "Guerrero",
'13': "Hidalgo", '14': "Jalisco", '15': "México", '16': "Michoacán de Ocampo",
'17': "Morelos", '18': "Nayarit", '19': "Nuevo León", '20': "Oaxaca",
'21': "Puebla", '22': "Querétaro", '23': "Quintana Roo", '24': "San Luis Potosí",
'25': "Sinaloa", '26': "Sonora", '27': "Tabasco", '28': "Tamaulipas",
'29': "Tlaxcala", '30': "Veracruz de Ignacio de la Llave", '31': "Yucatán", '32': "Zacatecas"
}
## ========================================================================================= ## =========================================================================================
## ========================================================================================= ## =========================================================================================
""" """
...@@ -37,16 +49,38 @@ class Command(BaseCommand): ...@@ -37,16 +49,38 @@ class Command(BaseCommand):
""" """
## loading files ## loading files
for index in range(1,33): for index in range(1,33):
print ("Index: ", index)
with open(base_path + str(index) + ".geojson") as f: with open(base_path + str(index) + ".geojson") as f:
# load data
data = json.load(f) data = json.load(f)
print ("Index: ", index) feature = data['features'][0]
for feat in data['features']:
polygon = Polygon( # update name
name = self.strip_accents(feat['properties']['NOMGEO'].lower()), feature['properties']['NOMGEO'] = states_names[feature['properties']['CVE_ENT']]
json_info = json.dumps(feat, ensure_ascii=True)
) # data to save
geometry = shape(feature['geometry'])
polygon.save()
# create polygon
polygon = Polygon(
name = self.strip_accents(feature['properties']['NOMGEO'].lower()),
json_info = json.dumps(feature, ensure_ascii=True),
wkt_polygon = geometry.wkt,
CVE_ENT = feature['properties']['CVE_ENT']
)
# save to db
polygon.save()
# for feat in data['features']:
# polygon = Polygon(
# name = self.strip_accents(feat['properties']['NOMGEO'].lower()),
# json_info = json.dumps(feat, ensure_ascii=True)
# )
#
# polygon.save()
## ========================================================================================= ## =========================================================================================
## ========================================================================================= ## =========================================================================================
......
...@@ -55,6 +55,11 @@ class Process(models.Model): ...@@ -55,6 +55,11 @@ class Process(models.Model):
platform = models.ForeignKey(Platform, on_delete=models.CASCADE, default='') platform = models.ForeignKey(Platform, on_delete=models.CASCADE, default='')
productLevel = models.CharField(max_length=8, default='') productLevel = models.CharField(max_length=8, default='')
status = models.BooleanField(default=True) status = models.BooleanField(default=True)
description = models.TextField(default="")
command = models.CharField(max_length=100, default='')
parameters = models.TextField(default="")
type = models.CharField(max_length=50)
platform_name = models.CharField(max_length=50)
class Search(models.Model): class Search(models.Model):
......
...@@ -100,16 +100,17 @@ li.pol { ...@@ -100,16 +100,17 @@ li.pol {
} }
.pol-title { .pol-title {
font: bold 15px Helvetica; font-weight: bold;
font-size: 15px;
text-decoration: none; text-decoration: none;
} }
.pol-body { .pol-body {
font: 11px Helvetica; font-size: 11px;
} }
.pol-src { .pol-src {
font: 10px Helvetica; font-size: 10px;
font-style: italic; font-style: italic;
padding-left: 280px; padding-left: 280px;
} }
...@@ -239,7 +240,6 @@ div .bg-geo { ...@@ -239,7 +240,6 @@ div .bg-geo {
} }
.info-product-box-content { .info-product-box-content {
font: Helvetica;
padding: 5px 10px; padding: 5px 10px;
margin-left: 90px; margin-left: 90px;
} }
......
...@@ -107,11 +107,17 @@ function updateCart(){ ...@@ -107,11 +107,17 @@ function updateCart(){
}); });
}); });
hideWaitingModal(); hideWaitingModal();
showCarProductsTabPanel(); if (user != "demo"){
showCarProductsTabPanel();
}
statusUpdateCart = false; statusUpdateCart = false;
} }
}); });
} }
console.log(user);
if (user == "demo") {
window.location.href = "pay";
}
}; };
function deleteProductCar(element){ function deleteProductCar(element){
......
...@@ -26,7 +26,8 @@ ...@@ -26,7 +26,8 @@
integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous"> integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
<!-- Fengyuan Chen's Datepicker --> <!-- Fengyuan Chen's Datepicker -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/datepicker.min.css" integrity="sha256-b88RdwbRJEzRx95nCuuva+hO5ExvXXnpX+78h8DjyOE=" crossorigin="anonymous" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/datepicker.min.css"
integrity="sha256-b88RdwbRJEzRx95nCuuva+hO5ExvXXnpX+78h8DjyOE=" crossorigin="anonymous"/>
{% block headMedia %}{% endblock %} {% block headMedia %}{% endblock %}
...@@ -90,11 +91,15 @@ ...@@ -90,11 +91,15 @@
{% block user %}{% endblock %} {% block user %}{% endblock %}
</li> </li>
<!-- Control Sidebar Toggle Button --> <!-- Control Sidebar Toggle Button -->
<li id="panelShowCart">{% if showcart %} {% if request.user.username == "demo" %}
<a id="product-list-toggle" href="#" data-toggle="control-sidebar"><i {% else %}
class="fa fa-shopping-cart"></i></a> <li id="panelShowCart">
{% if showcart %}
<a id="product-list-toggle" href="#" data-toggle="control-sidebar"><i
class="fa fa-shopping-cart"></i></a>
{% endif %}
</li>
{% endif %} {% endif %}
</li>
</ul> </ul>
</div> </div>
{% endif %} {% endif %}
...@@ -129,9 +134,12 @@ ...@@ -129,9 +134,12 @@
<ul class="nav nav-tabs nav-justified control-sidebar-tabs"> <ul class="nav nav-tabs nav-justified control-sidebar-tabs">
<li id="globe" class="active"><a href="#control-sidebar-home-tab" data-toggle="tab"><i <li id="globe" class="active"><a href="#control-sidebar-home-tab" data-toggle="tab"><i
class="fa fa-globe"></i></a></li> class="fa fa-globe"></i></a></li>
<li id="cart"><a href="#control-sidebar-settings-tab" onclick="updateCart()" data-toggle="tab"><i {% if request.user.username == 'demo' %}
class="fa fa-shopping-cart"></i></a> {% else %}
</li> <li id="cart"><a href="#control-sidebar-settings-tab" onclick="updateCart()" data-toggle="tab"><i
class="fa fa-shopping-cart"></i></a>
</li>
{% endif %}
</ul> </ul>
<!-- Tab panes --> <!-- Tab panes -->
<div class="tab-content"> <div class="tab-content">
...@@ -145,7 +153,12 @@ ...@@ -145,7 +153,12 @@
</div> </div>
<div class="sidebar-button"> <div class="sidebar-button">
<button type="submit" name="search" id="add-cart" class="btn btn-primary"> <button type="submit" name="search" id="add-cart" class="btn btn-primary">
Add to cart {% if request.user.username == 'demo' %}
Process
{% else %}
Add to cart
{% endif %}
</button> </button>
</div> </div>
</div> </div>
...@@ -216,8 +229,10 @@ ...@@ -216,8 +229,10 @@
<!-- Chartsjs --> <!-- Chartsjs -->
<script src="{% static 'catalog/js/Chart.min.js' %}" type="text/javascript"></script> <script src="{% static 'catalog/js/Chart.min.js' %}" type="text/javascript"></script>
<!-- Fengyuan Chen's Datepicker --> <!-- Fengyuan Chen's Datepicker -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/datepicker.min.js" integrity="sha256-/7FLTdzP6CfC1VBAj/rsp3Rinuuu9leMRGd354hvk0k=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/datepicker/0.6.5/datepicker.min.js"
<script src="{% static 'catalog/adminlte/bower_components/guides-master/dist/guides.min.js' %}" type="text/javascript"></script> integrity="sha256-/7FLTdzP6CfC1VBAj/rsp3Rinuuu9leMRGd354hvk0k=" crossorigin="anonymous"></script>
<script src="{% static 'catalog/adminlte/bower_components/guides-master/dist/guides.min.js' %}"
type="text/javascript"></script>
{% block footer %}{% endblock %} {% block footer %}{% endblock %}
{% block scripts %}{% endblock %} {% block scripts %}{% endblock %}
<div id="ol"></div> <div id="ol"></div>
......
...@@ -174,18 +174,22 @@ ...@@ -174,18 +174,22 @@
<li class="cloudTreeview treeview" id="searchCloud"> <li class="cloudTreeview treeview" id="searchCloud">
<a href="#"> <a href="#">
<i class="fa fa-cloud"></i> <i class="fa fa-cloud"></i>
<img id="image_clouds" class="pull-right" src=""
width=40px" style="margin-top: 0px;margin-right: 10px">
<span>Cloud percentage</span> <span>Cloud percentage</span>
<span class="pull-right-container"> <span class="pull-right-container">
<span class="label label-primary pull-right"></span> <span class="label label-primary pull-right"></span>
</span> </span>
</a> </a>
<ul class="treeview-menu sidebar-form"> <ul class="treeview-menu sidebar-form">
<li> <li>
<div class="row"> <div class="row">
<div class="col-lg-9" style="padding-top: 5px;"> <div class="col-lg-9" style="padding-top: 5px;">
<input class="cross-range" type="range" min="0" max="100" step="1" value="5" <input class="cross-range" type="range" min="0" max="100" step="1" value="5"
oninput="setCloudPercentage(this.value)" oninput="setCloudPercentage(this.value)"
id="cloudPercentageSelector" name="cloudPercentage"> id="cloudPercentageSelector" name="cloudPercentage">
</div> </div>
<div class="col-lg-3" style="padding-left:0px;padding-top: 5px;"> <div class="col-lg-3" style="padding-left:0px;padding-top: 5px;">
<!-- <input class="form-text" id="clouds" value="5" oninput="setCloudPercentageSlider(this.value)" name="cloudPercentage" disabled> --> <!-- <input class="form-text" id="clouds" value="5" oninput="setCloudPercentageSlider(this.value)" name="cloudPercentage" disabled> -->
...@@ -341,13 +345,14 @@ ...@@ -341,13 +345,14 @@
//console.log(clouds) //console.log(clouds)
//document.getElementById("clouds").value = clouds; //document.getElementById("clouds").value = clouds;
document.getElementById("clouds").innerHTML = clouds; document.getElementById("clouds").innerHTML = clouds;
change_cloud(clouds);
} }
function setCloudPercentageSlider(clouds) { function setCloudPercentageSlider(clouds) {
//console.log(clouds) //console.log(clouds)
//TODO //TODO
document.getElementById("cloudPercentageSelector").value = clouds; document.getElementById("cloudPercentageSelector").value = clouds;
if (parseInt(clouds) > 100) { if (parseInt(clouds) > 100) {
document.getElementById("cloudPercentageSelector").value = 100; document.getElementById("cloudPercentageSelector").value = 100;
} }
if (parseInt(clouds) < 0) { if (parseInt(clouds) < 0) {
...@@ -368,12 +373,28 @@ ...@@ -368,12 +373,28 @@
var purch_prod_url = "{% url 'purch-prod-rqst' %}"; var purch_prod_url = "{% url 'purch-prod-rqst' %}";
var del_prod_cartDB_url = "{% url 'del-cart-rqst' %}"; var del_prod_cartDB_url = "{% url 'del-cart-rqst' %}";
var advanced_search = '{{ advanced_search }}'; var advanced_search = '{{ advanced_search }}';
var user = '{{ request.user }}';
console.log(user);
</script> </script>
<script> <script>
$('#id_platform').click(function () { $('#id_platform option:first').attr({selected: 'selected', disabled: 'disabled', hidden: 'hidden'});
$('#id_platform').change(function () {
let dateTreeview = $('li.dateTreeview a'); let dateTreeview = $('li.dateTreeview a');
dateTreeview.click(); dateTreeview.click();
setTimeout(() => {
$("input[name='start']").datepicker('show');
}, 500);
});
$('li.dateTreeview a').click(function(){
setTimeout(() => {
$("input[name='start']").datepicker('show');
}, 500);
});
$("input[name='start']").change(function() {
$("input[name='end']").datepicker('show');
}); });
$('#id_end').on('hide.datepicker', function (e) { $('#id_end').on('hide.datepicker', function (e) {
...@@ -386,61 +407,89 @@ ...@@ -386,61 +407,89 @@
{% endblock %} {% endblock %}
{% block guide %} {% block guide %}
<script> <script>
$('#initGuide').guides({ $('#initGuide').guides({
guides: [ guides: [
{ {
element: $('#searchPolygon'), element: $('#searchPolygon'),
html: 'Search Region', html: 'Search Region',
render: function (params) { render: function (params) {
setTimeout(() => { setTimeout(() => {
$('.main-sidebar').addClass('activateMainSideBar'); $('.main-sidebar').addClass('activateMainSideBar');
}); });
}
}, {
element: $('#searchProcess'),
html: 'Select the search process',
}, {
element: $('#searchDate'),
html: 'Select the date to search'
}, {
element: $('#searchCloud'),
html: 'Select the percentage of clouds to search'
}
{% if advanced_search == True %} , {
element: $('#searchPolygonDrawn'),
html: 'Polygon to search'
} }
}, { {% endif %}
element: $('#searchProcess'), , {
html: 'Select the search process', element: $('#search-btn'),
}, { html: 'search button'
element: $('#searchDate'), }, {
html: 'Select the date to search' element: $('#panelUser'),
}, { html: 'User Panel',
element: $('#searchCloud'), render: function () {
html: 'Select the percentage of clouds to search' setTimeout(() => {
$('.main-sidebar').removeClass('activateMainSideBar');
$('.main-header').addClass('activateMainHeader');
$('.guides-left').css('top', '40px');
$('.guides-left').css('right', '90px');
});
}
}, {
element: $('#panelShowCart'),
html: 'Show Cart',
render: function () {
setTimeout(() => {
$('.guides-left').css('top', '40px');
$('.guides-left').css('right', '40px');
});
},
}
],
end: function () {
$('.main-header').removeClass('activateMainHeader');
}
});
function change_cloud(data) {
if (data == 0){
console.log('de 20 a 29 ' + data + '.');
document.getElementById('image_clouds').src="";
} }
{% if advanced_search == True %} , {
element: $('#searchPolygonDrawn'), if (data >1 && data <=19){
html: 'Polygon to search' console.log('de 20 a 29 ' + data + '.');
document.getElementById('image_clouds').src="{% static 'catalog/images/cloud1.png' %}";
} }
{% endif %} if (data >20 && data <=39){
, { console.log('de 20 a 29 ' + data + '.');
element: $('#search-btn'), document.getElementById('image_clouds').src="{% static 'catalog/images/cloud2.png' %}";
html: 'search button' }
}, { if (data >40 && data <=59){
element: $('#panelUser'), console.log('de 20 a 29 ' + data + '.');
html: 'User Panel', document.getElementById('image_clouds').src="{% static 'catalog/images/cloud3.png' %}";
render: function () { }
setTimeout(() => { if (data >60 && data <=79){
$('.main-sidebar').removeClass('activateMainSideBar'); console.log('de 20 a 29 ' + data + '.');
$('.main-header').addClass('activateMainHeader'); document.getElementById('image_clouds').src="{% static 'catalog/images/cloud4.png' %}";
$('.guides-left').css('top', '40px'); }
$('.guides-left').css('right', '90px'); if (data >80 && data <=100){
}); console.log('de 20 a 29 ' + data + '.');
} document.getElementById('image_clouds').src="{% static 'catalog/images/cloud5.png' %}";
}, {
element: $('#panelShowCart'),
html: 'Show Cart',
render: function () {
setTimeout(() => {
$('.guides-left').css('top', '40px');
$('.guides-left').css('right', '40px');
});
},
} }
],
end: function () {
console.log("Finished")
$('.main-header').removeClass('activateMainHeader');
} }
});
</script> </script>
{% endblock %} {% endblock %}
\ No newline at end of file
...@@ -28,12 +28,18 @@ ...@@ -28,12 +28,18 @@
<li> <li>
<a class="treeview " href="{% url 'reports' %}"> <a class="treeview " href="{% url 'reports' %}">
<i class="fa fa-history"></i> <i class="fa fa-history"></i>
<span>Shopping History</span> {% if request.user.username == "demo" %}
<span>Reports</span>
{% else %}
<span>Shopping History</span>
{% endif %}
<span class="pull-right-container"> <span class="pull-right-container">
<span class="label label-primary pull-right"></span> <span class="label label-primary pull-right"></span>
</span> </span>
</a> </a>
</li> </li>
{% if request.user.username == "demo" %}
{% else %}
<li> <li>
<a class="treeview " href="{% url 'show-cart' %}"> <a class="treeview " href="{% url 'show-cart' %}">
<i class="fa fa-shopping-cart"></i> <i class="fa fa-shopping-cart"></i>
...@@ -43,6 +49,7 @@ ...@@ -43,6 +49,7 @@
</span> </span>
</a> </a>
</li> </li>
{% endif %}
<li> <li>
<a class="treeview " href="{% url 'logout' %}?next={{ request.path }}"> <a class="treeview " href="{% url 'logout' %}?next={{ request.path }}">
<i class="glyphicon glyphicon-log-out"></i> <i class="glyphicon glyphicon-log-out"></i>
......
...@@ -100,17 +100,25 @@ def productList(request): ...@@ -100,17 +100,25 @@ def productList(request):
end_date = req['end'][0][:10] end_date = req['end'][0][:10]
clouds = req['cloudPercentage'][0] clouds = req['cloudPercentage'][0]
search_name = req['search_name'][0] search_name = req['search_name'][0]
print (search_name)
description = req['area_description'][0] description = req['area_description'][0]
print(search_name)
cloud_percentage = "[0 TO " + req['cloudPercentage'][0] + "]" cloud_percentage = "[0 TO " + req['cloudPercentage'][0] + "]"
process_info = Process.objects.values('name', 'platform_id', 'productLevel','type','platform__name').filter(id = process)
#print(process_info)
platform_name = process_info[0]['platform__name'] # Sentinel-2 ó Sentinel-1
product_type = process_info[0]['type'] # S2MSI1C o S2MSI2A
platform_id = process_info[0]['platform_id']
#print(platform_name)
#print(product_type)
## ----- aqui llamada a api sentinel ## ----- aqui llamada a api sentinel
## ----- antes consultar en DB si no se tiene ya el producto ## ----- antes consultar en DB si no se tiene ya el producto
date = ("".join(init_date.split('-')), "".join(end_date.split('-'))) date = ("".join(init_date.split('-')), "".join(end_date.split('-')))
params = {"platformname": "Sentinel-2"} params = {"platformname": platform_name}
# if cloud_percentage.strip(): # if cloud_percentage.strip():
# params['cloudcoverpercentage'] = cloud_percentage # params['cloudcoverpercentage'] = cloud_percentage
...@@ -120,19 +128,19 @@ def productList(request): ...@@ -120,19 +128,19 @@ def productList(request):
pol_bbox = polygonToBox.getWKTPolygonBoundingBox(area, True) pol_bbox = polygonToBox.getWKTPolygonBoundingBox(area, True)
##producttype: ##producttype:
type = " " type = product_type
print(process) #print(process)
if process == str(1): #~ if process == str(1):
type = "S2MSI1C" #~ type = "S2MSI1C"
if process == str(2): #~ if process == str(2):
type = "S2MSI2A" #~ type = "S2MSI2A"
## requesting producto to sentinel api ## requesting producto to sentinel api
##products = sentinel.getProducts(pol_bbox, date, params) ##products = sentinel.getProducts(pol_bbox, date, params)
products = sentinel.getProducts(pol_bbox, date, products = sentinel.getProducts(pol_bbox, date,
{"platformname": "Sentinel-2", "producttype": type, "cloudcoverpercentage": cloud_percentage},"Contains") ##intenta obtener los productos que contienen el polígono {"platformname": platform_name, "producttype": type, "cloudcoverpercentage": cloud_percentage},"Contains") ##intenta obtener los productos que contienen el polígono
if len(products) <= 0: if len(products) <= 0:
products = sentinel.getProducts(pol_bbox, date, {"platformname": "Sentinel-2", "producttype": type,"cloudcoverpercentage": cloud_percentage}) ## si no hay que contengan el polígono busca los que lo intersecan products = sentinel.getProducts(pol_bbox, date, {"platformname": platform_name, "producttype": type,"cloudcoverpercentage": cloud_percentage}) ## si no hay que contengan el polígono busca los que lo intersecan
##-- ##--
...@@ -169,7 +177,7 @@ def productList(request): ...@@ -169,7 +177,7 @@ def productList(request):
}) })
# Se tiene que pasar a Search el objeto completo correspondiente al process # Se tiene que pasar a Search el objeto completo correspondiente al process
index = Process.objects.filter(platform_id=process) index = Process.objects.filter(platform_id=platform_id)
proceso = index[0] proceso = index[0]
if (len(catalog) != 0): if (len(catalog) != 0):
...@@ -184,8 +192,6 @@ def productList(request): ...@@ -184,8 +192,6 @@ def productList(request):
description = description, description = description,
) )
print ("---------------------------")
print (search_name)
listSearch.save() listSearch.save()
return JsonResponse({'catalog': catalog}); return JsonResponse({'catalog': catalog});
...@@ -217,10 +223,15 @@ class SearchSubmitView(View): ...@@ -217,10 +223,15 @@ class SearchSubmitView(View):
for polygon in polygonList: for polygon in polygonList:
polygonInfo = json.loads(polygon.json_info) polygonInfo = json.loads(polygon.json_info)
if 'ENT_NAME' in polygonInfo['properties']:
state_name = polygonInfo['properties']['ENT_NAME']
else:
state_name = ""
data_list.append({ data_list.append({
'id': str(polygon.id), 'id': str(polygon.id),
'city': polygonInfo['properties']['NOMGEO'], 'city': polygonInfo['properties']['NOMGEO'],
'state': polygonInfo['properties']['ENT_NAME'], 'state': state_name,
'geojson': polygonInfo, 'geojson': polygonInfo,
'wkt_polygon': polygon.wkt_polygon, 'wkt_polygon': polygon.wkt_polygon,
'description': polygon.description, 'description': polygon.description,
...@@ -596,7 +607,7 @@ def Pay(request): ...@@ -596,7 +607,7 @@ def Pay(request):
#print(SENTINEL_PATH + "/tools/L2ASCL_AreaProcessing.sh " + purchase_dir + "/ 0 > " + purchase_dir + "/L2ASCL_AreaProcessing.log") #print(SENTINEL_PATH + "/tools/L2ASCL_AreaProcessing.sh " + purchase_dir + "/ 0 > " + purchase_dir + "/L2ASCL_AreaProcessing.log")
#f.open(purchase_dir + "/L2ASCL_AreaProcessing.log","w") #f.open(purchase_dir + "/L2ASCL_AreaProcessing.log","w")
#subprocess.call("L2ASCL_AreaProcessing.sh " + purchase_dir + "/ 0 > " + purchase_dir + "/L2ASCL_AreaProcessing.log",shell=True) #subprocess.call("L2ASCL_AreaProcessing.sh " + purchase_dir + "/ 0 > " + purchase_dir + "/L2ASCL_AreaProcessing.log",shell=True)
subprocess.Popen("L2ASCL_AreaProcessing.sh " + purchase_dir + "/ 0 > " + purchase_dir + "/L2ASCL_AreaProcessing.log",shell=True) subprocess.Popen("L2ASCL_AreaProcessing.sh " + purchase_dir + "/ 0 > " + purchase_dir + "/L2ASCL_AreaProcessing.log",shell=True)
......
.mapControl{
width: 33%;
height: auto;
position: absolute;
right: 15px;
bottom: 0px;
z-index: 10;
}
.controlContainer{
width: auto;
max-height: 60vh;
border-radius: 8px;
padding: 3px;
padding-right: 5px;
}
.baseMap{
height: 61px;
width: 78px;
padding:3px;
cursor: pointer;
background-color: white;
border-radius: 2px;
}
.mapSelector input[type="radio"]{
margin-right: 2px;
vertical-align: sub;
}
.mapSelector span{
font-weight: bold;
}
.baseMap img{
border-radius: 8px;
}
.mapSelector{
position: relative;
bottom: 2em;
padding: 4px;
background-color: rgba(0, 0, 0, 0.7);
color: white;
font-size: 12px;
}
...@@ -218,6 +218,7 @@ select::-ms-expand { ...@@ -218,6 +218,7 @@ select::-ms-expand {
transition: .25s all ease; transition: .25s all ease;
} }
/* range normal */
.arrow_box { .arrow_box {
position: relative; position: relative;
...@@ -251,3 +252,70 @@ select::-ms-expand { ...@@ -251,3 +252,70 @@ select::-ms-expand {
} }
/* range de comparacion */
/* left */
.arrow_box_left {
position: relative;
background: #ffffff;
border: 1px solid #ffa74f;
min-height: 30px;
bottom: 10px;
}
.arrow_box_left:after, .arrow_box_left:before {
top: 100%;
left: 50%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}
.arrow_box_left:after {
border-color: rgba(255, 255, 255, 0);
border-top-color: #ffffff;
border-width: 10px;
margin-left: -10px;
}
.arrow_box_left:before {
border-color: rgba(255, 167, 79, 0);
border-top-color: #ffa74f;
border-width: 11px;
margin-left: -11px;
}
/* left */
.arrow_box_right {
position: relative;
background: #ffffff;
border: 1px solid #ffa74f;
min-height: 30px;
bottom: 10px;
}
.arrow_box_right:after, .arrow_box_right:before {
top: 100%;
left: 50%;
border: solid transparent;
content: " ";
height: 0;
width: 0;
position: absolute;
pointer-events: none;
}
.arrow_box_right:after {
border-color: rgba(255, 255, 255, 0);
border-top-color: #ffffff;
border-width: 10px;
margin-left: -10px;
}
.arrow_box_right:before {
border-color: rgba(255, 167, 79, 0);
border-top-color: #ffa74f;
border-width: 11px;
margin-left: -11px;
}
\ No newline at end of file
...@@ -131,6 +131,9 @@ function createmap(data) { ...@@ -131,6 +131,9 @@ function createmap(data) {
}) })
}); });
// fit (zoom) to polygon
map.getView().fit(feature.getGeometry());
} }
...@@ -170,4 +173,3 @@ function is_public(purchase_id, status) { ...@@ -170,4 +173,3 @@ function is_public(purchase_id, status) {
} }
}); });
} }
...@@ -5,36 +5,51 @@ FIRST_IMAGE_LAYER_INDEX = 2; ...@@ -5,36 +5,51 @@ FIRST_IMAGE_LAYER_INDEX = 2;
// create wkt polygon // create wkt polygon
const wktFormat = new ol.format.WKT(); const wktFormat = new ol.format.WKT();
const polygonFeature = wktFormat.readFeature(polygon, { const polygonFeature = wktFormat.readFeature(polygon, {
dataProjection: 'EPSG:4326', dataProjection: 'EPSG:4326',
featureProjection: 'EPSG:3857' featureProjection: 'EPSG:3857'
}); });
// Create layers // Create layers
const mapLayer = new ol.layer.Tile({ const light = new ol.layer.Tile({
name: 'mapbox', name: 'mapbox',
source: new ol.source.XYZ({ source: new ol.source.XYZ({
url:'https://api.tiles.mapbox.com/v4/mapbox.light/{z}/{x}/{y}.png?access_token='+MAPBOX_ACCESS_TOKEN url: 'https://api.tiles.mapbox.com/v4/mapbox.light/{z}/{x}/{y}.png?access_token=' + MAPBOX_ACCESS_TOKEN
}) })
});
const streets = new ol.layer.Tile({
name: 'mapbox',
source: new ol.source.XYZ({
url: 'http://tile.openstreetmap.org/{z}/{x}/{y}.png'
})
});
const night = new ol.layer.Tile({
name: 'mapbox',
source: new ol.source.XYZ({
url: 'https://api.mapbox.com/styles/v1/mapbox/navigation-guidance-night-v2/tiles/256/{z}/{x}/{y}?access_token=' + MAPBOX_ACCESS_TOKEN
})
}); });
const polygonLayer = new ol.layer.Vector({ const polygonLayer = new ol.layer.Vector({
name: 'polygon', name: 'polygon',
source: new ol.source.Vector({ source: new ol.source.Vector({
features: [polygonFeature] features: [polygonFeature]
}) })
}); });
const layers = new Map(); const layers = new Map();
// create map // create map
const map = new ol.Map({ const map = new ol.Map({
target: 'minimap', target: 'minimap',
layers: [mapLayer, polygonLayer], layers: [light, polygonLayer],
view: new ol.View({ view: new ol.View({
center: ol.proj.fromLonLat([-99.19, 19.61]), center: ol.proj.fromLonLat([-99.19, 19.61]),
zoom: 4, zoom: 4,
minZoom:4 minZoom: 4
}) })
}); });
// fit (zoom) to polygon // fit (zoom) to polygon
...@@ -43,76 +58,78 @@ map.getView().fit(polygonFeature.getGeometry()); ...@@ -43,76 +58,78 @@ map.getView().fit(polygonFeature.getGeometry());
// show first layer date // show first layer date
let currentDate = labels[0]; let currentDate = labels[0];
addImageLayer({ addImageLayer({
layerDate: currentDate layerDate: currentDate
}); });
// main function to change layers // main function to change layers
// data = { layerDate: to change all layers by date } // data = { layerDate: to change all layers by date }
// data = { layerName: to add single layer } // data = { layerName: to add single layer }
function addImageLayer(data) { function addImageLayer(data) {
if (data.layerDate) { if (data.layerDate) {
currentDate = data.layerDate; currentDate = data.layerDate;
}
$.ajax({
type: 'POST',
dataType: "json",
data: {'purchase_id': purchase_id, 'report': zone, 'date': currentDate},
url: '/reports/tiles/tileinfo',
success: response => {
changeLayers(data.layerName);
setOpacity($('#opacitySlide').val());
map.getView().setMinZoom(response.zoom.min);
map.getView().setMaxZoom(response.zoom.max);
} }
});
$.ajax({
type: 'POST',
dataType: "json",
data: {'purchase_id': purchase_id, 'report': zone, 'date': currentDate},
url: '/reports/tiles/tileinfo',
success: response => {
changeLayers(data.layerName);
setOpacity($('#opacitySlide').val());
map.getView().setMinZoom(response.zoom.min);
map.getView().setMaxZoom(response.zoom.max);
}
});
} }
// remove old layers and add layers with new date // remove old layers and add layers with new date
function changeLayers(especific_layerName) { function changeLayers(especific_layerName) {
const layersToChance = especific_layerName ? especific_layerName.split() : getSelectedLayersName(); const layersToChance = especific_layerName ? especific_layerName.split() : getSelectedLayersName();
removeLayer(especific_layerName); removeLayer(especific_layerName);
layersToChance.forEach(layerName => { layersToChance.forEach(layerName => {
const xyz = new ol.layer.Tile({ const xyz = new ol.layer.Tile({
name: layerName, name: layerName,
source: new ol.source.XYZ({ source: new ol.source.XYZ({
projection: 'EPSG:3857', projection: 'EPSG:3857',
url: '/reports/tiles/'+purchase_id+'/'+zone+'/'+layerName+'/'+currentDate+'/{z}/{x}/{-y}.png', url: '/reports/tiles/' + purchase_id + '/' + zone + '/' + layerName + '/' + currentDate + '/{z}/{x}/{-y}.png',
tilePixelRatio: 2 tilePixelRatio: 2
}) })
});
if (layerName === 'TCI') {
map.getLayers().insertAt(FIRST_IMAGE_LAYER_INDEX, xyz);
} else {
map.addLayer(xyz);
}
layers.set(layerName, xyz);
}); });
if (layerName === 'TCI') {
map.getLayers().insertAt(FIRST_IMAGE_LAYER_INDEX, xyz);
} else {
map.addLayer(xyz);
}
layers.set(layerName, xyz);
});
} }
// remove all if there isn't layername // remove all if there isn't layername
function removeLayer(layerName) { function removeLayer(layerName) {
if (!layerName) { if (!layerName) {
layers.forEach(layer => { map.removeLayer(layer); }); layers.forEach(layer => {
layers.clear(); map.removeLayer(layer);
return; });
} layers.clear();
return;
map.removeLayer(layers.get(layerName)); }
layers.delete(layerName);
map.removeLayer(layers.get(layerName));
layers.delete(layerName);
} }
// set opacity to layers // set opacity to layers
function setOpacity(value) { function setOpacity(value) {
layers.forEach(layer => { layers.forEach(layer => {
if(layer.get('name') != 'TCI') { if (layer.get('name') != 'TCI') {
layer.setOpacity(value) layer.setOpacity(value)
} }
}) })
} }
...@@ -121,16 +138,16 @@ function setOpacity(value) { ...@@ -121,16 +138,16 @@ function setOpacity(value) {
//vigila cuando se cierra el menu de comparar y cuando se cierra desactiva la comparacion (si la clase de compare incluye menu-open está abierto) //vigila cuando se cierra el menu de comparar y cuando se cierra desactiva la comparacion (si la clase de compare incluye menu-open está abierto)
var compareMenu = document.getElementById('compare'); var compareMenu = document.getElementById('compare');
var observer = new MutationObserver( function(mutations) { var observer = new MutationObserver(function (mutations) {
mutations.forEach( function(mutation) { mutations.forEach(function (mutation) {
if (mutation.attributeName == 'class') { if (mutation.attributeName == 'class') {
if(compareMenu.className.indexOf("open")===-1) { //se cerró el menu de comparacion if (compareMenu.className.indexOf("open") === -1) { //se cerró el menu de comparacion
exitCompare(); exitCompare();
} }
} }
}); });
}); });
observer.observe(compareMenu, { attributes : true, attributeOldValue: true, attributeFilter : ['class'], subtree: true}); observer.observe(compareMenu, {attributes: true, attributeOldValue: true, attributeFilter: ['class'], subtree: true});
//crea el control swipe, que sirve para comparar //crea el control swipe, que sirve para comparar
var ctrl = new ol.control.Swipe(); var ctrl = new ol.control.Swipe();
...@@ -138,115 +155,161 @@ var ctrl = new ol.control.Swipe(); ...@@ -138,115 +155,161 @@ var ctrl = new ol.control.Swipe();
//funcion que inicia la comparacion //funcion que inicia la comparacion
//recibe la lista de fechas y por default compara la primera y la ultima //recibe la lista de fechas y por default compara la primera y la ultima
function compare(labels) { function compare(labels) {
var swipeControl = false; var swipeControl = false;
map.getControls().forEach(function (control) { //checa si ya se añadio el control de comparacion (swipe), si no lo tiene, lo agrega
if (control instanceof ol.control.Swipe) { //si ya tiene el control agregado
swipeControl = true;
}
});
if (swipeControl == true) { //si ya tiene el comparador no hace nada, ya esta en modo comparacion
//map.removeControl(swipeControlObj);
} else { //si no tiene el comparador lo agrega
//removeImageLayers();
map.addControl(ctrl);
ctrl.set('position', 0.5);
//console.log(map.controls)
var labelDateLeft = labels[0] //por default compara la primera y ultima fecha
var labelDateRight = labels[labels.length - 1]
//pone las fechas por default en los selectores de fechas
//document.getElementById("selectLeftCompare").value = labelDateLeft;
//document.getElementById("selectRightCompare").value = labelDateRight;
//agrega las capas izquierda/derecha
selectLeft(labelDateLeft);
selectRight(labelDateRight);
//muestra los selectores de fechas y oculta la linea de tiempo
document.getElementById("selectLeft").style.display = "block";
document.getElementById("selectRight").style.display = "block";
document.getElementById("timeLine").style.display = "none";
map.getControls().forEach(function (control) { //checa si ya se añadio el control de comparacion (swipe), si no lo tiene, lo agrega
if(control instanceof ol.control.Swipe){ //si ya tiene el control agregado
swipeControl =true;
} }
});
if(swipeControl==true) { //si ya tiene el comparador no hace nada, ya esta en modo comparacion
//map.removeControl(swipeControlObj);
} else { //si no tiene el comparador lo agrega
//removeImageLayers();
map.addControl(ctrl);
ctrl.set('position', 0.5);
//console.log(map.controls)
var labelDateLeft = labels[0] //por default compara la primera y ultima fecha
var labelDateRight = labels[labels.length-1]
//pone las fechas por default en los selectores de fechas
document.getElementById("selectLeftCompare").value = labelDateLeft;
document.getElementById("selectRightCompare").value = labelDateRight;
//agrega las capas izquierda/derecha
selectLeft(labelDateLeft);
selectRight(labelDateRight);
//muestra los selectores de fechas y oculta la linea de tiempo
document.getElementById("selectLeft").style.display = "block";
document.getElementById("selectRight").style.display = "block";
document.getElementById("timeLine").style.display = "none";
}
} }
//sale del modo comparacion //sale del modo comparacion
function exitCompare() { function exitCompare() {
map.getControls().forEach(function (control) { //checa si ya se añadio el control de comparacion (swipe) map.getControls().forEach(function (control) { //checa si ya se añadio el control de comparacion (swipe)
if(control instanceof ol.control.Swipe){ //ya tiene el control agregado lo quita if (control instanceof ol.control.Swipe) { //ya tiene el control agregado lo quita
map.removeControl(control); map.removeControl(control);
} }
}); });
//quita las capas de comparacion izquierda/derecha //quita las capas de comparacion izquierda/derecha
var imageLayers = map.getLayers().getArray().slice(); var imageLayers = map.getLayers().getArray().slice();
imageLayers.forEach(layer => { imageLayers.forEach(layer => {
if(layer.get('name') === 'left' || layer.get('name') === 'right') { if (layer.get('name') === 'left' || layer.get('name') === 'right') {
map.removeLayer(layer) map.removeLayer(layer)
} }
}) })
//oculta los selectores de fechas y muestra la linea de tiempo //oculta los selectores de fechas y muestra la linea de tiempo
document.getElementById("selectLeft").style.display = "none"; document.getElementById("selectLeft").style.display = "none";
document.getElementById("selectRight").style.display = "none"; document.getElementById("selectRight").style.display = "none";
document.getElementById("timeLine").style.display = "block"; document.getElementById("timeLine").style.display = "block";
} }
//selecciona el lado izquierdo para comparar //selecciona el lado izquierdo para comparar
function selectLeft(date) { function selectLeft(date) {
var labelDateLeft = date; var labelDateLeft = date;
var layer_type = 'TCI'; var layer_type = 'TCI';
const left = new ol.layer.Tile({ const left = new ol.layer.Tile({
name: 'left', name: 'left',
opacity: 1, opacity: 1,
source: new ol.source.XYZ({ source: new ol.source.XYZ({
projection: 'EPSG:3857', projection: 'EPSG:3857',
url: '/reports/tiles/'+purchase_id+'/'+zone+'/'+layer_type+'/'+labelDateLeft+'/{z}/{x}/{-y}.png', url: '/reports/tiles/' + purchase_id + '/' + zone + '/' + layer_type + '/' + labelDateLeft + '/{z}/{x}/{-y}.png',
tilePixelRatio: 2, tilePixelRatio: 2,
minZoom: 10, minZoom: 10,
maxZoom: 15 maxZoom: 15
}) })
}); });
map.addLayer(left); map.addLayer(left);
ctrl.addLayer(left); ctrl.addLayer(left);
} }
//selecciona el lado derecho para comparar //selecciona el lado derecho para comparar
function selectRight(date){ function selectRight(date) {
console.log("---------");
console.log(date)
console.log("---------");
var labelDateRight = date; var labelDateRight = date;
var layer_type = 'TCI'; var layer_type = 'TCI';
const right = new ol.layer.Tile({ const right = new ol.layer.Tile({
name: 'right', name: 'right',
opacity: 1, opacity: 1,
source: new ol.source.XYZ({ source: new ol.source.XYZ({
projection: 'EPSG:3857', projection: 'EPSG:3857',
url: '/reports/tiles/'+purchase_id+'/'+zone+'/'+layer_type+'/'+labelDateRight+'/{z}/{x}/{-y}.png', url: '/reports/tiles/' + purchase_id + '/' + zone + '/' + layer_type + '/' + labelDateRight + '/{z}/{x}/{-y}.png',
tilePixelRatio: 2, tilePixelRatio: 2,
minZoom: 10, minZoom: 10,
maxZoom: 15 maxZoom: 15
}) })
}); });
map.addLayer(right); map.addLayer(right);
ctrl.addLayer(right, true); ctrl.addLayer(right, true);
} }
//selecciona comparacion vertical u horizontal //selecciona comparacion vertical u horizontal
function setCompareDirection(direction){ function setCompareDirection(direction) {
ctrl.set('orientation',direction) ctrl.set('orientation', direction)
//mueve los selectores de fechas //mueve los selectores de fechas
if(direction === 'horizontal'){ if (direction === 'horizontal') {
document.getElementById("selectLeft").style.bottom = "70%"; document.getElementById("selectLeft").style.bottom = "70%";
document.getElementById("selectLeft").style.left = "15%"; document.getElementById("selectLeft").style.left = "15%";
document.getElementById("selectRight").style.left = "15%"; document.getElementById("selectRight").style.left = "15%";
} }
else{ else {
document.getElementById("selectLeft").style.bottom = "50px"; document.getElementById("selectLeft").style.bottom = "50px";
document.getElementById("selectLeft").style.left = "30%"; document.getElementById("selectLeft").style.left = "30%";
document.getElementById("selectRight").style.left = "75%"; document.getElementById("selectRight").style.left = "75%";
} }
} }
// Fin funciones de comparacion // Fin funciones de comparacion
//****************************** //******************************
/************************* Functions de layer Sources ******************************/
let currentMap = light;
function changeMap(selectedMap) {
map.getLayers().getArray().forEach(function (layer) {
if (layer.values_.name == "mapbox") {
map.removeLayer(layer)
}
})
$('#' + selectedMap).prop('checked', true);
switch (selectedMap) {
case 'light':
map.getLayers().insertAt(0, light);
currentMap = light;
break;
case 'streets':
map.getLayers().insertAt(0, streets);
currentMap = streets;
break;
case 'night':
map.getLayers().insertAt(0, night);
currentMap = night;
break;
}
}
function showControlMap() {
if ($('#showControlMap').is(':visible')) {
$("#showControlMap").hide();
$("#hideControlMap").show();
$(".mapControl").show();
} else {
$("#showControlMap").show();
$("#hideControlMap").hide();
$(".mapControl").hide();
}
}
\ No newline at end of file
...@@ -32,6 +32,9 @@ document.getElementById("myChart").onclick = function (evt) { ...@@ -32,6 +32,9 @@ document.getElementById("myChart").onclick = function (evt) {
layerDate: label layerDate: label
}); });
// update date slider
$('input[id="inputRange"]').val(firstPoint._index);
//console.log(myChart.legend.legendItems[firstPoint._datasetIndex].text) //nombre de la capa a la que pertenece (vegetación, agua, etc.) //console.log(myChart.legend.legendItems[firstPoint._datasetIndex].text) //nombre de la capa a la que pertenece (vegetación, agua, etc.)
//if (!firstPoint) return; //if (!firstPoint) return;
activePoints.forEach(function (value, index) { activePoints.forEach(function (value, index) {
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<span class="label label-primary pull-right"></span> <span class="label label-primary pull-right"></span>
</span> </span>
</a> </a>
<li class="treeview" id="compare"> <li class="treeview" id="compare">
<a href="#" onclick="compare(labels)"> <a href="#" onclick="compare(labels)">
<i class="fas fa-columns"></i> <i class="fas fa-columns"></i>
...@@ -60,9 +60,9 @@ ...@@ -60,9 +60,9 @@
</a> </a>
</li> </li>
</ul> </ul>
</li> </li>
<!-- <!--
<a class="treeview " href="#" onclick="compare(labels)"> <a class="treeview " href="#" onclick="compare(labels)">
<i class="fas fa-columns"></i></i> <i class="fas fa-columns"></i></i>
<i class="fa fa-eye-slash hideChart" style="display:none"></i> <i class="fa fa-eye-slash hideChart" style="display:none"></i>
...@@ -71,8 +71,8 @@ ...@@ -71,8 +71,8 @@
<span class="pull-right-container"> <span class="pull-right-container">
<span class="label label-primary pull-right"></span> <span class="label label-primary pull-right"></span>
</span> </span>
</a> </a>
--> -->
</li> </li>
{% endif %} {% endif %}
<li class="treeview"> <li class="treeview">
...@@ -164,7 +164,6 @@ ...@@ -164,7 +164,6 @@
<i class="fa fa-file-zip-o"></i> <i class="fa fa-file-zip-o"></i>
<span>Export to Zip</span> <span>Export to Zip</span>
<span class="pull-right-container"> <span class="pull-right-container">
<span class="label label-primary pull-right"></span> <span class="label label-primary pull-right"></span>
</span> </span>
</a> </a>
...@@ -188,6 +187,15 @@ ...@@ -188,6 +187,15 @@
</span> </span>
</a> </a>
</li> </li>
<li>
<a class="treeview submenu" href="../../static/reports/tmpImages/repsat_test_dev/{{ email }}/{{ purchaseID }}/myvideo.mp4">
<i class="fa fa-file-video-o"></i>
<span>Video</span>
<span class="pull-right-container">
<span class="label label-primary pull-right"></span>
</span>
</a>
</li>
</ul> </ul>
</li> </li>
<li class="treeview"> <li class="treeview">
...@@ -284,6 +292,18 @@ ...@@ -284,6 +292,18 @@
</ul> </ul>
</li> </li>
<li>
<a class="treeview " href="#" onclick="showControlMap()">
<i class="fa fa-globe"></i>
<i class="fa fa-globe" style="display:none"></i>
<span id="showControlMap">Show Maps</span>
<span id="hideControlMap" style="display:none">Hide Maps</span>
<span class="pull-right-container">
<span class="label label-primary pull-right"></span>
</span>
</a>
</li>
<!-- <li> <!-- <li>
<a class="treeview " href="#" onclick="showComparisons()"> <a class="treeview " href="#" onclick="showComparisons()">
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
<link rel="stylesheet" href="{% static 'catalog/css/body.css' %}" type="text/css"> <link rel="stylesheet" href="{% static 'catalog/css/body.css' %}" type="text/css">
<link rel="stylesheet" href="{% static 'reports/css/scldata.css' %}" type="text/css"> <link rel="stylesheet" href="{% static 'reports/css/scldata.css' %}" type="text/css">
<link rel="stylesheet" href="{% static 'reports/css/crossrange.css' %}" type="text/css"> <link rel="stylesheet" href="{% static 'reports/css/crossrange.css' %}" type="text/css">
<link rel="stylesheet" href="{% static 'reports/css/control-map.css' %}" type="text/css">
<link rel="stylesheet" href="{% static 'reports/css/ol-ext.css' %}" type="text/css"> <link rel="stylesheet" href="{% static 'reports/css/ol-ext.css' %}" type="text/css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<link rel="stylesheet" href="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/css/ol.css" <link rel="stylesheet" href="https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/css/ol.css"
...@@ -135,23 +136,67 @@ ...@@ -135,23 +136,67 @@
</div> </div>
</div> </div>
<div id="selectLeft" class="container floating-panel" style="position:absolute; display:none; bottom: 50px; left: 30%; width: 300px; z-index: 1000"> <div id="selectLeft" class="container floating-panel"
<div class="select"> style="position:absolute; display:none; bottom: 50px; left: 30%; width: 300px; z-index: 1000">
<select onchange="selectLeft(this.value)" id="selectLeftCompare"> <div class="">
<div id="rangecontrol3"></div>
<!--<select onchange="selectLeft(this.value)" id="selectLeftCompare">
{% for label in labels %} {% for label in labels %}
<option value="{{label}}" >{{ label|slice:"6:8" }}/{{ label|slice:"4:6" }}/{{label|slice:"0:4" }}</option> <option value="{{label}}" >{{ label|slice:"6:8" }}/{{ label|slice:"4:6" }}/{{label|slice:"0:4" }}</option>
{% endfor %} {% endfor %}
</select> </select>-->
<input class="cross-range" id="selectLeftCompare" type="range" min="0" max="{{ labels|length|add:'-1' }}"
step="1" value="0" data-thumbwidth="20" style="background: transparent;">
</div> </div>
</div> </div>
<div id="selectRight" class="container floating-panel" style="position:absolute; display:none; bottom: 50px; left: 75%; width: 300px; z-index: 1000"> <div id="selectRight" class="container floating-panel"
<div class="select"> style="position:absolute; display:none; bottom: 50px; left: 75%; width: 300px; z-index: 1000">
<select onchange="selectRight(this.value)" id="selectRightCompare"> <div>
<div id="rangecontrol4"></div>
<!--<select onchange="selectRight(this.value)" id="selectRightCompare">
{% for label in labels %} {% for label in labels %}
<option value="{{label}}" >{{ label|slice:"6:8" }}/{{ label|slice:"4:6" }}/{{label|slice:"0:4" }}</option> <option value="{{label}}" >{{ label|slice:"6:8" }}/{{ label|slice:"4:6" }}/{{label|slice:"0:4" }}</option>
{% endfor %} {% endfor %}
</select> </select>-->
<input class="cross-range" id="selectRightCompare" type="range" min="0" max="{{ labels|length|add:'-1' }}"
step="1" value="0" data-thumbwidth="20" style="background: transparent;">
</div>
</div>
<div class="mapControl" style="display: none">
<div class="mapControl" style="">
<div id="controlMap" class="controlContainer">
<div class="row">
<div class="col-lg-4">
<div class="baseMap" onclick="changeMap('light')">
<img src="../../static/images/light.png" width="100%" height="100%">
<span class="mapSelector">
<input id="light" type="radio" name="layerOption" checked="">
<span>Noon</span>
</span>
</div>
</div>
<div class="col-lg-4">
<div class="baseMap" onclick="changeMap('streets')">
<img src="../../static/images/Streets.png" width="100%" height="100%">
<span class="mapSelector">
<input id="streets" type="radio" name="layerOption">
<span>Streets</span>
</span>
</div>
</div>
<div class="col-lg-4">
<div class="baseMap" onclick="changeMap('night')">
<img src="../../static/images/night.png" width="100%" height="100%">
<span class="mapSelector">
<input id="night" type="radio" name="layerOption">
<span>Night</span>
</span>
</div>
</div>
</div>
</div>
</div> </div>
</div> </div>
...@@ -309,45 +354,80 @@ ...@@ -309,45 +354,80 @@
let fecha = $("option:eq(" + controlVal + ")").text(); let fecha = $("option:eq(" + controlVal + ")").text();
let valor = $("option:eq(" + controlVal + ")").val(); let valor = $("option:eq(" + controlVal + ")").val();
var slider3 = $("#inputRange")[0]; var slider3 = $("#inputRange")[0];
var sliderPos = slider3.value / slider3.max; var sliderPos = slider3.value / slider3.max;
var pixelPostion = slider3.clientWidth * sliderPos; var pixelPostion = slider3.clientWidth * sliderPos;
//this is your pixel value
console.log(pixelPostion);
addImageLayer({ addImageLayer({
layerDate: valor layerDate: valor
}); });
$("#maptitle").empty();
$("#maptitle").append("Map Date: " + fecha);
$("#tooltiptext").empty(); $("#tooltiptext").empty();
$("#tooltiptext").append(fecha); $("#tooltiptext").append(fecha);
console.log(position);
$("#rangecontrol2").empty(); $("#rangecontrol2").empty();
$("#rangecontrol2").append('<span class="arrow_box" id="tooltiptext">'+fecha+'</span>'); $("#rangecontrol2").append('<span class="arrow_box" id="tooltiptext">'+fecha+'</span>');
$('.arrow_box').css({'left':Math.round(pixelPostion-35) + 'px'}) $('.arrow_box').css({'left':Math.round(pixelPostion-35) + 'px'})
});
$('input[id="selectLeftCompare"]').on('input', function () {
let control = $(this);
let controlMin = control.attr('min');
let controlMax = control.attr('max');
let controlVal = control.val();
let controlThumbWidth = control.data('thumbwidth');
let range = controlMax - controlMin;
let position = (controlVal - controlMin) / range * 100;
let positionOffset = Math.round(controlThumbWidth * position / 100) - controlThumbWidth / 2;
let fecha = $("option:eq(" + controlVal + ")").text();
let valor = $("option:eq(" + controlVal + ")").val();
selectLeft(valor);
var slider3 = $("#selectLeftCompare")[0];
var sliderPos = slider3.value / slider3.max;
var pixelPostion = slider3.clientWidth * sliderPos;
$("#tooltiptext2").empty();
$("#tooltiptext2").append(fecha);
$("#rangecontrol3").empty();
$("#rangecontrol3").append('<span class="arrow_box_left" id="tooltiptext2">'+fecha+'</span>');
$('.arrow_box_left').css({'left':Math.round(pixelPostion-35) + 'px'})
});
$('input[id="selectRightCompare"]').on('input', function () {
let control = $(this);
let controlMin = control.attr('min');
let controlMax = control.attr('max');
let controlVal = control.val();
let controlThumbWidth = control.data('thumbwidth');
let range = controlMax - controlMin;
let position = (controlVal - controlMin) / range * 100;
let positionOffset = Math.round(controlThumbWidth * position / 100) - controlThumbWidth / 2;
let fecha = $("option:eq(" + controlVal + ")").text();
let valor = $("option:eq(" + controlVal + ")").val();
selectRight(valor);
var slider3 = $("#selectRightCompare")[0];
var sliderPos = slider3.value / slider3.max;
var pixelPostion = slider3.clientWidth * sliderPos;
$("#tooltiptext3").empty();
$("#tooltiptext3").append(fecha);
$("#rangecontrol4").empty();
$("#rangecontrol4").append('<span class="arrow_box_right" id="tooltiptext3">'+fecha+'</span>');
$('.arrow_box_right').css({'left':Math.round(pixelPostion-35) + 'px'})
}); });
/*
var slider2 = document.getElementById("inputRange");
var sliderOffsetX = slider2.getBoundingClientRect().left ;//- document.documentElement.getBoundingClientRect().left;
var sliderOffsetY = slider2.getBoundingClientRect().top ;//- document.documentElement.getBoundingClientRect().top;
var sliderWidth = slider2.offsetWidth ;
slider2.addEventListener('mousemove', function (event) {
var currentMouseXPos = (event.clientX + window.pageXOffset) - sliderOffsetX;
var sliderValAtPos = Math.round(currentMouseXPos / sliderWidth * {{ labels|length }}+1);
value = sliderValAtPos - 1;
var fecha = $("option:eq(" + value + ")").text();
var valor = $("option:eq(" + value + ")").val();
//$("#tooltiptext").empty();
//$("#tooltiptext").css({"margin-left": currentMouseXPos + 'px', "margin-top": sliderOffsetY + 'px'});
//$("#tooltiptext").append(fecha);
});*/
</script> </script>
<!-- page script --> <!-- page script -->
......
...@@ -109,14 +109,25 @@ def Reports(request): ...@@ -109,14 +109,25 @@ def Reports(request):
folders = [] folders = []
zip = "" zip = ""
if(request.user.username == "demo"):
product_list = Purchase.objects.values('id', 'productList', 'aggreg_date', 'search__clouds',
'search__startDate', 'search__endDate', 'search__process_id__name',
'search__search_name', 'is_public','name','description', 'user__email'
).filter(
user_id__in=[request.user.id, 37, 2],
purchased=1
)
else:
product_list = Purchase.objects.values('id', 'productList', 'aggreg_date', 'search__clouds',
'search__startDate', 'search__endDate', 'search__process_id__name',
'search__search_name', 'is_public','name','description', 'user__email'
).filter(
user_id=request.user.id,
purchased=1
)
product_list = Purchase.objects.values('id', 'productList', 'aggreg_date', 'search__clouds', 'search__startDate',
'search__endDate', 'search__process_id__name', 'search__search_name',
'is_public','name','description').filter(
user_id=request.user.id, purchased=1)
for producto in product_list: for producto in product_list:
log_info = USERS_PATH + request.user.email + "/" + str(producto['id']) + "/L2ASCL_AreaProcessing.log" log_info = USERS_PATH + producto['user__email'] + "/" + str(producto['id']) + "/L2ASCL_AreaProcessing.log"
##################################################### #####################################################
# progress bar # # progress bar #
...@@ -150,13 +161,13 @@ def Reports(request): ...@@ -150,13 +161,13 @@ def Reports(request):
initial_folder = "." initial_folder = "."
absolute_path = USERS_PATH + request.user.email + "/" + str(producto['id']) + "/" absolute_path = USERS_PATH + producto['user__email'] + "/" + str(producto['id']) + "/"
if not os.path.exists(absolute_path): if not os.path.exists(absolute_path):
print("folder out noes not exists") print("folder out noes not exists")
else: else:
for files in os.listdir(absolute_path): for files in os.listdir(absolute_path):
if files == 'scl_data.json': if files == 'scl_data.json':
# print(files) # +(files)
initial_folder = files[:8] initial_folder = files[:8]
break break
elif files.endswith('_sclData.json'): elif files.endswith('_sclData.json'):
...@@ -168,12 +179,12 @@ def Reports(request): ...@@ -168,12 +179,12 @@ def Reports(request):
zip_path = USERS_PATH + request.user.email + "/" + str(producto['id']) zip_path = USERS_PATH + producto['user__email'] + "/" + str(producto['id'])
# print(zip_path) # print(zip_path)
# "../ static / reports / tmpImages / repsat_test_dev / umorales @ centrogeo.edu.mx / "+str(producto['id']) / myzip.zip" # "../ static / reports / tmpImages / repsat_test_dev / umorales @ centrogeo.edu.mx / "+str(producto['id']) / myzip.zip"
wkt = USERS_PATH + request.user.email + "/" + str(producto['id']) + "/findProducts.json" wkt = USERS_PATH + producto['user__email'] + "/" + str(producto['id']) + "/findProducts.json"
with open(wkt, 'r') as jsonfile: with open(wkt, 'r') as jsonfile:
polygon = json.load(jsonfile) polygon = json.load(jsonfile)
...@@ -229,10 +240,10 @@ def wsProcessProgress(request): ...@@ -229,10 +240,10 @@ def wsProcessProgress(request):
else: else:
if 'Starting Process...' in open(log_info).read(): if 'Starting Process...' in open(log_info).read():
progress = 10 progress = 10
progress_text = 'Processing...' progress_text = 'Processing...'
if 'Creating Shape file...' in open(log_info).read(): if 'Creating Shape file...' in open(log_info).read():
progress = 20 progress = 20
progress_text = 'Creating Shape file...' progress_text = 'Creating Shape file...'
if 'Linking Products...' in open(log_info).read(): if 'Linking Products...' in open(log_info).read():
progress = 30 progress = 30
progress_text = 'Linking Products...' progress_text = 'Linking Products...'
...@@ -247,10 +258,10 @@ def wsProcessProgress(request): ...@@ -247,10 +258,10 @@ def wsProcessProgress(request):
progress_text = 'Extracting SCL information...' progress_text = 'Extracting SCL information...'
if 'Spliting SCL image...' in open(log_info).read(): if 'Spliting SCL image...' in open(log_info).read():
progress = 70 progress = 70
progress_text = 'Spliting SCL image...' progress_text = 'Spliting SCL image...'
if 'Creating Tiles...' in open(log_info).read(): if 'Creating Tiles...' in open(log_info).read():
progress = 90 progress = 90
progress_text = 'Creating Tiles...' progress_text = 'Creating Tiles...'
if 'Finalizing...' in open(log_info).read(): if 'Finalizing...' in open(log_info).read():
progress = 100 progress = 100
progress_text = 'Finalizing...' progress_text = 'Finalizing...'
...@@ -266,6 +277,7 @@ def wsProcessProgress(request): ...@@ -266,6 +277,7 @@ def wsProcessProgress(request):
}) })
progress = 0 progress = 0
progress_text =""
log_info = "" log_info = ""
# productList2 = [] # productList2 = []
......
...@@ -157,7 +157,11 @@ ...@@ -157,7 +157,11 @@
</li> </li>
<!-- timeline item --> <!-- timeline item -->
<li> <li>
<i class="fa fa-cart-arrow-down bg-green-active"></i> {% if request.user.username == "demo" %}
<i class="fa fa-file-text bg-green-active"></i>
{% else %}
<i class="fa fa-cart-arrow-down bg-green-active"></i>
{% endif %}
<div class="timeline-item"> <div class="timeline-item">
<span class="time"> <span class="time">
...@@ -169,7 +173,7 @@ ...@@ -169,7 +173,7 @@
</a> </a>
</span> </span>
<h3 class="timeline-header no-border">You bought <h3 class="timeline-header no-border">
<br>Process: <b>{{ product.process }}</b> <br>Process: <b>{{ product.process }}</b>
<br>Area: <b>{{ product.search_name }}</b> <br>Area: <b>{{ product.search_name }}</b>
<br>Size: <b>{{ product.size }}</b> <br>Size: <b>{{ product.size }}</b>
...@@ -200,7 +204,12 @@ ...@@ -200,7 +204,12 @@
<hr> <hr>
</div> </div>
<div class="container"> <div class="container">
<h3 class="box-title" id="purchases_in">Purchases Per Month</h3> {% if request.user.username == "demo" %}
<h3 class="box-title" id="purchases_in">Reports Per Month</h3>
{% else %}
<h3 class="box-title" id="purchases_in">Purchases Per Month</h3>
{% endif %}
<div id="mostrar"> <div id="mostrar">
</div> </div>
...@@ -364,7 +373,12 @@ ...@@ -364,7 +373,12 @@
var label = myChart.data.labels[firstPoint._index]; var label = myChart.data.labels[firstPoint._index];
//if (!firstPoint) return; //if (!firstPoint) return;
$('#purchases_in').empty(); $('#purchases_in').empty();
$('#purchases_in').append("Purchases in " + label); {% if request.user.username == "demo" %}
$('#purchases_in').append("Reports in " + label);
{% else %}
$('#purchases_in').append("Reports in " + label);
{% endif %}
$.ajax({ $.ajax({
...@@ -382,7 +396,7 @@ ...@@ -382,7 +396,7 @@
"<tr>" + "<tr>" +
"<th class=\"text-center\">Zone</th>" + "<th class=\"text-center\">Zone</th>" +
"<th class=\"text-center\">Process</th>" + "<th class=\"text-center\">Process</th>" +
"<th class=\"text-center\">Purchase Date</th>" + "<th class=\"text-center\">Consultation Date</th>" +
"<th class=\"text-center\">Start Date</th>" + "<th class=\"text-center\">Start Date</th>" +
"<th class=\"text-center\">End Date</th>" + "<th class=\"text-center\">End Date</th>" +
"</tr>" + "</tr>" +
......
...@@ -80,9 +80,16 @@ ...@@ -80,9 +80,16 @@
<i class="fa fa-search margin-r-5"></i> <b>Searches</b> <a <i class="fa fa-search margin-r-5"></i> <b>Searches</b> <a
class="pull-right">{{ data.searches }}</a> class="pull-right">{{ data.searches }}</a>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<i class="fa fa-shopping-cart margin-r-5"></i> <b>Purchases</b> <a <i class="fa fa-shopping-cart margin-r-5"></i>
class="pull-right">{{ data.purchases }}</a> {% if request.user.username == "demo" %}
<b>Reports</b>
{% else %}
<b>Purchases</b>
{% endif %}
<a class="pull-right">{{ data.purchases }}</a>
</li> </li>
<li class="list-group-item"> <li class="list-group-item">
<i class="fa fa-download margin-r-5"></i> <b>In Process</b> <a <i class="fa fa-download margin-r-5"></i> <b>In Process</b> <a
...@@ -92,23 +99,23 @@ ...@@ -92,23 +99,23 @@
<i class="fa fa-pie-chart margin-r-5"></i> <b>Disk usage</b> <a <i class="fa fa-pie-chart margin-r-5"></i> <b>Disk usage</b> <a
class="pull-right">{{ data.size }}</a> class="pull-right">{{ data.size }}</a>
</li> </li>
<li class="list-group-item">
<div class="row ccontent ">
<div class="col-md-10 col-xs-10 col-lg-10 col-sm-10 col-xl-10"> <li class="list-group-item">
<i class="fa fa-search-plus margin-r-5"></i> <i class="fa fa-search-plus margin-r-5"></i>
<b>Advanced Search</b> <b>Advanced Search</b>
</div> <a class="pull-right">
<div class="col-md-2 col-xs-2 col-lg-2 col-sm-2 col-xl-2 pull-right"> <label class="switch">
<label class="switch"> <input class="pull-right" id="{{ data.user_id }}" type="checkbox"
<input class="pull-right" id="{{ data.user_id }}" type="checkbox" onclick="change_permission({{ data.user_id }})"
onclick="change_permission({{ data.user_id }})" {% if data.advanced_search == True %} checked {% endif %}>
{% if data.advanced_search == True %} checked {% endif %}> <span class="slider round pull-right" style="margin-right: 0px"></span>
<span class="slider round pull-right" style="margin-right: 0px"></span> </label>
</label> </a>
</div>
</div>
</li> </li>
</ul> </ul>
<!--a href="#" class="btn btn-primary btn-block"><b>Follow</b></a--> <!--a href="#" class="btn btn-primary btn-block"><b>Follow</b></a-->
...@@ -148,24 +155,24 @@ ...@@ -148,24 +155,24 @@
<script> <script>
function change_permission(user_id) { function change_permission(user_id) {
var checkBox = document.getElementById(user_id); var checkBox = document.getElementById(user_id);
if (checkBox.checked == true) { if (checkBox.checked == true) {
permission(user_id, 'True'); permission(user_id, 'True');
} else { } else {
permission(user_id, 'False'); permission(user_id, 'False');
}
}
function permission(user_id, status) {
$.ajax({
dataType: "json",
url: 'ws/change_permission',
data: {'user_id': user_id, 'status': status},
success: function (data) {
alert(data);
} }
}); }
}
function permission(user_id, status) {
$.ajax({
dataType: "json",
url: 'ws/change_permission',
data: {'user_id': user_id, 'status': status},
success: function (data) {
alert(data);
}
});
}
</script> </script>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment