Commit 69c31a50 authored by Renán Sosa Guillen's avatar Renán Sosa Guillen

performance improvement

parent 6394ede9
......@@ -44,8 +44,13 @@ class Command(BaseCommand):
uri = "https://scihub.copernicus.eu/dhus/odata/v1/Products?$filter=Name eq '" + product_name + "'"
r = requests.get(uri, auth=(usr, pwd))
root = ET.fromstring(r.content)
print root
# base_link = root[5][0].text
uuid = root[5][11][0].text
try:
uuid = root[5][11][0].text
except:
print root
print "\n"
data_dict = apiSentinel.get_product_odata(uuid, full=True)
......@@ -68,18 +73,23 @@ class Command(BaseCommand):
PRODUCT_EXISTS = Product_l1c.objects.filter(identifier=file_name).exists()
if not PRODUCT_EXISTS:
data_dict = self.generate_json(file_name)
# print json.dumps(data_dict, indent=3, sort_keys=True, default=str)
product_l1c = Product_l1c(
uuid = data_dict['id'],
identifier = data_dict['Identifier'],
file_path = path,
json = json.dumps(data_dict, indent=3, sort_keys=True, ensure_ascii=True, default=str)
)
product_l1c.save()
print "Id: " + data_dict['id']
try:
data_dict = self.generate_json(file_name)
# print json.dumps(data_dict, indent=3, sort_keys=True, default=str)
product_l1c = Product_l1c(
uuid = data_dict['id'],
identifier = data_dict['Identifier'],
file_path = path,
json = json.dumps(data_dict, indent=3, sort_keys=True, ensure_ascii=True, default=str)
)
product_l1c.save()
print "Id: " + data_dict['id']
except:
print "Error con el archivo " + file_name
else:
print "Product " + file_name + "is already in DB."
# print "Product " + file_name + " is already in DB."
pass
......@@ -33,13 +33,24 @@ class Command(BaseCommand):
for file in file_list:
file_name = file.replace(".zip", '')
prod_l1c = Product_l1c.objects.all().filter(identifier=file_name)[0]
product_l2a = Product_l2a(
prod_l1c = prod_l1c,
identifier = prod_l1c.identifier,
file_path = path
)
product_l2a.save()
print prod_l1c.identifier
try:
PRODUCT_EXISTS = Product_l2a.objects.filter(identifier=file_name).exists()
if not PRODUCT_EXISTS:
prod_l1c = Product_l1c.objects.filter(identifier=file_name)[0]
product_l2a = Product_l2a(
prod_l1c = prod_l1c,
identifier = prod_l1c.identifier,
file_path = path
)
product_l2a.save()
print prod_l1c.identifier
else:
"Existe"
except:
print "Error con archivo " + file_name
......@@ -27,11 +27,6 @@ class Polygon(models.Model):
wkt_polygon = models.TextField(null=True)
class KeyNameTable(models.Model):
id = models.CharField(max_length=10, primary_key=True, unique=True)
name = models.CharField(max_length=65)
class Product_l1c(models.Model):
uuid = models.CharField(max_length=50)
identifier = models.CharField(max_length=50)
......
......@@ -361,6 +361,12 @@ div .sidebar-button button {
bottom: 30px;
}
.single-product-input input[type=checkbox] {
float : right;
margin-right : 5%;
margin-top : 8%;
}
/*ul.control-sidebar-menu input[type=checkbox] {*/
/*position: absolute;*/
/*right: 20px;*/
......
......@@ -122,7 +122,9 @@ function erase_product_list_globe() {
function erase_product_list_globe_by_id(element_id) {
var $li_element = $('li#' + element_id);
var $div_element = $('div#' + element_id + "-div");
var $li_element = $('li#' + element_id + "-li");
$div_element[0].parentNode.removeChild($div_element[0]);
$li_element[0].parentNode.removeChild($li_element[0]);
}
......@@ -138,7 +140,7 @@ function drawApiResponse(element) {
for (var i=0; i<product_list.catalog.length; i++) {
var data = product_list.catalog[i];
if (data.uuid === element.id.replace("-h4", '')) {
if (data.uuid === element.id.replace("-li", '')) {
element.style.textDecoration = 'underline';
console.log("footprint:\n", data.product.footprint);
prevfeature = osmap.addfootprint(data.product.footprint, prevfeature);
......@@ -192,9 +194,12 @@ $(document).click(function (event) {
});
function no_prods_modal() {
$('aside').removeClass("control-sidebar-open");
$('#no-prods-modal').modal('show');
function mssgModal(info) {
var modal = document.querySelector('#mssg-modal');
// filling template
modal.querySelector('.modal-title').textContent = info.title;
modal.querySelector('.modal-body').querySelector('p').textContent = info.body;
$('#mssg-modal').modal('show');
}
......@@ -242,9 +247,7 @@ $(document).ready(function () {
// function for making POST request to productList in view.py
$('#product-form').submit(function (event) {
event.preventDefault();
erase_product_list_globe();
var submit_data = $('#product-form').serialize();
// petición de producto a base de datos
......@@ -261,9 +264,7 @@ $(document).ready(function () {
// productListGlobe = data.catalog;
// console.log('GLOBEEE: ', productListGlobe);
if (product_list.catalog.length <= 0) {
no_prods_modal();
} else {
if (product_list.catalog.length > 0) {
console.log("DEFS: ahora crea producto");
data.catalog.forEach(function (data) {
......@@ -280,15 +281,16 @@ $(document).ready(function () {
var temp = document.querySelector('#product_list_template');
// filling template
temp.content.querySelector('li').id = data.uuid;
temp.content.querySelector('h4').id = data.uuid + "-h4";
temp.content.querySelector('h4').textContent = data.product.producttype + "_" + data.product.tileid;
temp.content.querySelector('p').textContent = data.product.beginposition;
temp.content.querySelector('input').value = data.uuid;
temp.content.querySelector('img').src = "data:image/jpeg;base64, " + data.img;
temp.content.querySelectorAll('span')[1].textContent = data.product.identifier;
temp.content.querySelectorAll('span')[2].textContent = data.product.size;
temp.content.querySelectorAll('span')[3].textContent = data.product.instrumentname;
temp.content.querySelector('.single-product-input').id = data.uuid + "-div";
temp.content.querySelector('input').value = data.uuid;
temp.content.querySelector('li').id = data.uuid + "-li";
temp.content.querySelector('h4').id = data.uuid + "-h4";
temp.content.querySelector('h4').textContent = data.product.producttype + "_" + data.product.tileid;
temp.content.querySelector('p').textContent = data.product.beginposition;
temp.content.querySelector('img').src = "data:image/jpeg;base64, " + data.img;
temp.content.querySelectorAll('span')[1].textContent = data.product.identifier;
temp.content.querySelectorAll('span')[2].textContent = data.product.size;
temp.content.querySelectorAll('span')[3].textContent = data.product.instrumentname;
var clone = document.importNode(temp.content, true);
document.querySelector('#product-list-globe').appendChild(clone);
......@@ -301,6 +303,12 @@ $(document).ready(function () {
});
showProductTabPane();
} else {
$('aside').removeClass("control-sidebar-open");
mssgModal({
title : "No products were found!",
body : "Parameters for this search brought no results."
});
}
}
});
......@@ -310,96 +318,106 @@ $(document).ready(function () {
// agrega producto al carrito
$('#product-to-cart-form').submit(function (event) {
event.preventDefault();
var submit_data = $('#product-to-cart-form').serialize();
console.log("Submitted data:", typeof(submit_data));
console.log("Submitted data:", submit_data);
var submit_data_array = submit_data.split("&product_selected=");
console.log("djdj: ", productListGlobe);
productListGlobe.forEach(function (data) {
if (submit_data_array.indexOf(data.uuid) > -1) {
console.log("DATA sí esta: ", data.uuid);
console.log("SS: ", data.product.size);
cartProductList.push({
'uuid' : data.uuid,
'info' : {
'producttype' : data.product.producttype,
'tileid' : data.product.tileid,
'beginposition' : data.product.beginposition,
'img' : data.img,
'identifier' : data.product.identifier,
'size' : data.product.size,
'instrumentname' : data.product.instrumentname
}
});
productUUIDListCart.push(data.uuid);
erase_product_list_globe_by_id(data.uuid);
}
});
// request para guardado de producto en carrito
// variable prod_cart_url en map.html
$.ajax({
type : 'POST',
url : prod_cart_url,
data : {
'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value,
'cart_product_list' : JSON.stringify(cartProductList)
},
success: function () {
cartProductList = [];
// PRODUCT_COUNTER += 1; // this variable counts the number of products in shopping cart
// PRODUCT_COUNTER_STR = PRODUCT_COUNTER.toString();
// var temp_1 = document.querySelector('#product_cart_1');
// var prod_id = temp_1.content.querySelectorAll('ul')[1].id + "-" + PRODUCT_COUNTER_STR;
// // filling template
// temp_1.content.querySelector('span').textContent = "Product " + PRODUCT_COUNTER_STR;
// temp_1.content.querySelectorAll('ul')[1].id = prod_id;
// var clone_1 = document.importNode(temp_1.content, true);
// document.querySelector('#product-list-cart').appendChild(clone_1);
if (!IS_PRODUCT_CONTAINER) {
createProductContainer();
IS_PRODUCT_CONTAINER = true;
var ul_element = document.getElementById('product-list-globe');
if (ul_element.firstChild) {
console.log("ULEMA: ", ul_element);
var submit_data = $('#product-to-cart-form').serialize();
console.log("Submitted data:", typeof(submit_data));
console.log("Submitted data:", submit_data);
var submit_data_array = submit_data.split("&product_selected=");
console.log("djdj: ", productListGlobe);
productListGlobe.forEach(function (data) {
if (submit_data_array.indexOf(data.uuid) > -1) {
console.log("DATA sí esta: ", data.uuid);
console.log("SS: ", data.product.size);
productUUIDListCart.push(data.uuid);
erase_product_list_globe_by_id(data.uuid);
cartProductList.push({
'uuid' : data.uuid,
'info' : {
'producttype' : data.product.producttype,
'tileid' : data.product.tileid,
'beginposition' : data.product.beginposition,
'img' : data.img,
'identifier' : data.product.identifier,
'size' : data.product.size,
'instrumentname' : data.product.instrumentname
}
});
}
});
// request a DB para mostrar los productos en el carrito
// variable prod_from_cartDB_url en map.html
if (cartProductList.length > 0) {
// request para guardado de producto en carrito
// variable prod_cart_url en map.html
$.ajax({
type : 'POST',
url : prod_from_cartDB_url,
url : prod_cart_url,
data : {
'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value,
'product_uuid_list' : productUUIDListCart.toString()
'cart_product_list' : JSON.stringify(cartProductList)
},
dataType : 'json',
success : function (data) {
productUUIDListCart = [];
data.product_list.forEach(function (product) {
var temp_2 = document.querySelector('#product_cart_2');
// filling template
temp_2.content.querySelector('li').id = product.uuid;
temp_2.content.querySelector('h4').id = product.uuid + "-h4";
temp_2.content.querySelector('h4').textContent = product.info.producttype + "_" + product.info.tileid;
temp_2.content.querySelector('p').textContent = product.info.beginposition;
temp_2.content.querySelector('img').src = "data:image/jpeg;base64, " + product.info.img;
temp_2.content.querySelectorAll('span')[1].textContent = product.info.identifier;
temp_2.content.querySelectorAll('span')[2].textContent = product.info.size;
temp_2.content.querySelectorAll('span')[3].textContent = product.info.instrumentname;
var clone_2 = document.importNode(temp_2.content, true);
document.querySelector('#product-list-cart-items').appendChild(clone_2);
// document.querySelector('#' + prod_id).appendChild(clone_2);
success: function () {
cartProductList = [];
// PRODUCT_COUNTER += 1; // this variable counts the number of products in shopping cart
// PRODUCT_COUNTER_STR = PRODUCT_COUNTER.toString();
// var temp_1 = document.querySelector('#product_cart_1');
// var prod_id = temp_1.content.querySelectorAll('ul')[1].id + "-" + PRODUCT_COUNTER_STR;
// // filling template
// temp_1.content.querySelector('span').textContent = "Product " + PRODUCT_COUNTER_STR;
// temp_1.content.querySelectorAll('ul')[1].id = prod_id;
// var clone_1 = document.importNode(temp_1.content, true);
// document.querySelector('#product-list-cart').appendChild(clone_1);
if (!IS_PRODUCT_CONTAINER) {
createProductContainer();
IS_PRODUCT_CONTAINER = true;
}
// request a DB para mostrar los productos en el carrito
// variable prod_from_cartDB_url en map.html
$.ajax({
type : 'POST',
url : prod_from_cartDB_url,
data : {
'csrfmiddlewaretoken' : document.getElementsByName('csrfmiddlewaretoken')[0].value,
'product_uuid_list' : productUUIDListCart.toString()
},
dataType : 'json',
success : function (data) {
productUUIDListCart = [];
data.product_list.forEach(function (product) {
var temp_2 = document.querySelector('#product_cart_2');
// filling template
temp_2.content.querySelector('li').id = product.uuid;
temp_2.content.querySelector('h4').id = product.uuid + "-h4";
temp_2.content.querySelector('h4').textContent = product.info.producttype + "_" + product.info.tileid;
temp_2.content.querySelector('p').textContent = product.info.beginposition;
temp_2.content.querySelector('img').src = "data:image/jpeg;base64, " + product.info.img;
temp_2.content.querySelectorAll('span')[1].textContent = product.info.identifier;
temp_2.content.querySelectorAll('span')[2].textContent = product.info.size;
temp_2.content.querySelectorAll('span')[3].textContent = product.info.instrumentname;
var clone_2 = document.importNode(temp_2.content, true);
document.querySelector('#product-list-cart-items').appendChild(clone_2);
// document.querySelector('#' + prod_id).appendChild(clone_2);
});
}
});
}
});
} else {
mssgModal({
title : "No products selected!",
body : "Select one or more products to send to your cart."
});
}
});
}
});
});
......@@ -243,7 +243,7 @@
{% endblock %}
{% block templates %}{% include "templates.html" %}{% endblock %}
{% block modal1 %}{% include "noProductsModal.html" %}{% endblock %}
{% block modal1 %}{% include "mssgModal.html" %}{% endblock %}
{% block scripts %}
<script>
......
......@@ -22,14 +22,17 @@
<!-- product list template -->
<template id="product_list_template">
<div id="" class="single-product-input">
<input type="checkbox" name="product_selected" value="" checked>
</div>
<li id="" onclick="drawApiResponse(this);">
<a href="javascript:void(0)">
<i class="menu-icon glyphicon glyphicon-bookmark bg-red"></i>
<div class="menu-info">
<h4 id="" class="control-sidebar-subheading"></h4>
<p></p>
<input type="checkbox" name="product_selected" value="" checked>
</div>
<i class="menu-icon glyphicon glyphicon-bookmark bg-red"></i>
<div class="menu-info">
<h4 id="" class="control-sidebar-subheading"></h4>
<p></p>
<!-- <input type="checkbox" name="product_selected" value="" checked> -->
</div>
</a>
<div class="info-product-box bg-geo">
<span class="info-product-box-img">
......
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