Commit d3a2030f by Esteban Ramirez Mora

Actualizaciones

parent a8c3f712
......@@ -292,6 +292,41 @@
</div>
<div id="tuto_agent" class="col-md-6 col-sm-12 col-xs-12">
<div class="form-group">
<label class = "text-sm" id="agent">Agente:</label>
<select id = "agent_selected" class="form-control">
<option value="model_default" selected disabled>Selecione un agente</option>
<option value="Patogenos">Patógeno</option>
<option value="Hospederos">Hospedero</option>
<option value="Vectores">Vector</option>
</select>
</div>
</div>
<div id="tuto_disease" class="col-md-6 col-sm-12 col-xs-12">
<div class="form-group" >
<label class = "text-sm" id="disease">Enfermedad:</label>
<select id = "disease_selected" class="form-control">
<option value = dis_default" selected disabled> Seleccione Enfermedad</option>
<option value ="todas">Sin enfermedad</option>
<!--<option value="Enfermedad de Chagas">Enfermedad de Chagas</option>
<option value="Fiebre de Zika"> Fiebre de Zika</option>
<option value="Fiebre de Dengue">Fiebre de Dengue</option>
<option value="Fiebre Chikunguña"> Fiebre Chikinguña</option>
<option value="Hantavirosis"> Hantavirosis</option>
<option value="Fiebre del Nilo"> Fiebre del Nilo</option>
<option value="Enfermedad de Lyme"> Enfermedad de Lyme </option>
<option value="Fiebre del Nilo"> Fiebre del Nilo</option>
<option value="Leptospirosis"> Leptospirosis</option>
<option value="Leishmaniasis"> Leishmaniasis</option>-->
</select>
</div>
</div>
</div>
<!-- container de 40% seteado en componete -->
......
......@@ -66,8 +66,8 @@
</header>
<section id="content">
<h2>Bienvenido a EPI-SPECIES<span>Plataforma Universitaria de Eco-epidemiologia Espacial</span></h2>
<p>EPI-SPECIES es una herramienta interactiva para el análisis del nicho epidemiológico de enfermedades infecciosas y la creación de modelos predictivos para analizar su dinámica espacio-temporal en México.</p>
<h2>Bienvenido a EpI-SPECIES<span>Plataforma Universitaria de Eco-epidemiología Espacial</span></h2>
<p>EpI-SPECIES es una herramienta interactiva para el análisis del nicho epidemiológico de enfermedades infecciosas y la creación de modelos predictivos para analizar su dinámica espacio-temporal en México.</p>
<h3>Análisis de nicho epidemiológico</h3>
<p>Si deseas realizar un análisis de nicho epidemiológico basta con seguir los siguientes pasos:</p>
<ul class="steps">
......@@ -76,7 +76,7 @@
<li>Analiza tus resultados</li>
<li><a class="button-1" href="https://epispecies.c3.unam.mx/geoportal_v0.1.html">Ir a Análisis de Nicho</a></li>
</ul>
<p>Si es la primera vez que utilizas la plataforma, te recomendamos dar clic en el botón de <b>Casos de uso</b> o el botón de <b>Tutorial</b> que te orientara paso a paso como utilizar EPI-SPECIES</p>
<p>Si es la primera vez que utilizas la plataforma, te recomendamos dar clic en el botón de <b>Casos de uso</b> o el botón de <b>Tutorial</b> que te orientara paso a paso como utilizar EpI-SPECIES</p>
</section>
<footer>
<p class="copyright">©Todos los derechos reservados Chilam · C3 · UNAM - 2021.</p>
......
......@@ -28,7 +28,7 @@
<article>
<pre class="prettyprint source linenums"><code>
/**
* Módulo variable, utilizado para crear y gestionar los selectores de grupos de variables en nicho ecológico y comunidad ecológica.
* Módulo variable, utilizado para crear y gos sestionar lelectores de grupos de variables en nicho ecológico y comunidad ecológica.
*
* @namespace variable_module
*/
......
......@@ -692,18 +692,55 @@ var map_module = (function (url_geoserver, workspace, verbose, url_zacatuche) {
_REGION_SELECTED = region_selected;
let query = 'query{get_mesh(grid_res: "' + _grid_res + '"){cve simplified_geom}}'
console.log(query)
$.ajax({
url: _url_zacatuche + "/niche/especie/getGridGeoJson",
type: 'post',
dataType: "json",
data: {
"grid_res": grid_res,
"footprint_region": _REGION_SELECTED
},
success: function (json) {
method: "POST",
url : "http://10.90.0.42:4003/graphql/mesh/",
contentType: "application/json",
data: JSON.stringify({query: query}),
success: function (resp) {
let data = resp["data"];
let obj = data["get_mesh"]
let json = {type: 'FeatureCollection',crs: {}, features: []}
console.log(obj)
for (let i = 0; i < obj.length; i++)
{let prop = new Object();
let geom = new Object();
geom = Object.assign({},obj[i].simplified_geom)
prop = parseInt(obj[i].cve)
let prope = new Object();
prope.gridid =prop
let type = new Object();
type.type = "feature"
type.geometry = geom
type.properties = prope
json.features.push(type)
json.crs = {
"type": "name",
"properties": {
"name": "urn:ogc:def:crs:EPSG::4326"
}
}
}
console.log(json);
//console.log(json[1].geometry)
console.log(json)
// obj["features"].push( json["geometry"])
// console.log(features)
// Asegura que el grid este cargado antes de realizar una generacion por enlace
$("#loadData").prop("disabled", false);
$('#map').loading('stop');
......@@ -729,8 +766,8 @@ var map_module = (function (url_geoserver, workspace, verbose, url_zacatuche) {
_grid_map_decil = jQuery.extend(true, {}, json) // se genera un clon del gridmap
_grid_map_state_mun = jQuery.extend(true, {}, json) // se genera un clon del gridmap
// console.log(_grid_map_occ);
// console.log(_grid_map_target);
console.log(_grid_map_occ);
console.log(_grid_map_target);
......@@ -835,6 +872,10 @@ var map_module = (function (url_geoserver, workspace, verbose, url_zacatuche) {
});
}
......@@ -1049,6 +1090,7 @@ var map_module = (function (url_geoserver, workspace, verbose, url_zacatuche) {
if (_first_loaded) {
_VERBOSE ? console.log("first loaded") : _VERBOSE;
console.log(grid_map)
for (var i = 0; i < grid_map.features.length; i++) {
......@@ -2170,18 +2212,74 @@ var map_module = (function (url_geoserver, workspace, verbose, url_zacatuche) {
"region": region
}
if (_AGENT_SELECTED == 'Hospederos')
var _url = 'http://10.90.0.42:4006/graphql/hospederos/'
else if (_AGENT_SELECTED == 'Patogenos')
var _url = "http://10.90.0.42:4007/graphql/patogenos/"
else
var _url = "http://10.90.0.42:4008/graphql/vectores/"
let nodo = _AGENT_SELECTED.toLowerCase()
let query = 'query{occurrences_by_taxon_' + nodo + '(query: "nombreenfermedad = \''+ _DISEASE_SELECTED + '\' AND '+ _PARENT_FIELD.toLowerCase() +' = \'' + _LABEL_VALUE +'\' "){individuosinfectados gridid_'+ _grid_res + '}}'
console.log(query)
fetch(_url_zacatuche + "/niche/especie/getGridSpeciesTaxon", {
$.ajax({
method: "POST",
body: JSON.stringify(data),
headers: {
"Content-Type": "application/json"
url: _url,
contentType: "application/json",
data: JSON.stringify({query: query}),
success: function (resp) {
let mesh = "gridid_" + _grid_res
let data2 = resp.data["occurrences_by_taxon_" + nodo]
//let data = resp["data"];
//let obj = data["get_mesh"]
console.log(data2)
let gridid = {gridid: []}
for (let i = 0; i < data2.length; i++) {
let mesh = "gridid_" + _grid_res
gridid.gridid.push(parseInt(data2[i][mesh]))
}
console.log(gridid)
function onlyUnique(value, index, self) {
return self.indexOf(value) === index;
}
})
.then(resp => resp.json())
.then(resp => {
var a = gridid["gridid"];
var unique = a.filter(onlyUnique);
//console.log(unique)
//console.log(a)
let vec = []
for (let i = 0; i < unique.length; i++) {
let value = unique[i]
let arr = []
for (let j = 0; j < data2.length; j++)
if (data2[j][mesh] == value) {
arr.push(data2[j])
//console.log(arr)
}
var occurrences = arr.reduce(function (prev, cur) {
return prev + cur.individuosinfectados;
}, 0);
//console.log('Total:', occurrences);
let aux = new Object();
aux.gridid = value
aux.fp = 0
aux.tp = 0
aux.occ = occurrences
aux.target = "true"
aux.tp = 0
vec.push(aux)
}
$('#tuto_mapa_occ').loading('stop');
......@@ -2191,14 +2289,14 @@ var map_module = (function (url_geoserver, workspace, verbose, url_zacatuche) {
$("#deletePointsButton").css("backgroundColor", "#fff");
_data_sp_occ = resp.data
_data_sp_occ = vec
// asigna una referencia global para tener el resultado de la útima petición
// _data_sp_occ = data_sp
var num_cell_occ = resp.data.length
var num_cell_occ = vec.length
var num_occ = 0
_data_sp_occ.forEach(function(item){
_data_sp_occ.forEach(function (item) {
num_occ += parseInt(item["occ"])
})
......@@ -2241,56 +2339,8 @@ var map_module = (function (url_geoserver, workspace, verbose, url_zacatuche) {
}
// $('#hist_fecha_container').loading({
// stoppable: true
// });
// Histograma de años de la especie. Se comenta para analisis de covid19
// TODO: Hacerlo en fechas mensuales y diarias
// fetch(_url_zacatuche + "/niche/especie/getCountByYear", {
// method: "POST",
// body: JSON.stringify(data),
// headers: {
// "Content-Type": "application/json"
// }
// })
// .then(resp => resp.json())
// .then(resp => {
// if(resp.ok == true){
// var data = resp.data
// console.log(data)
// $('#hist_fecha_container').loading('stop');
// _histogram_module.createBarChartFecha(data);
// }
// })
// .catch(err => {
// // _VERBOSE ? console.log("error: " + textStatus) : _VERBOSE;
// _VERBOSE ? console.log(errorThrown) : _VERBOSE;
// _VERBOSE ? console.log(jqXHR.responseText) : _VERBOSE;
// });
}
})
.catch(err => {
// _VERBOSE ? console.log("error: " + textStatus) : _VERBOSE;
_VERBOSE ? console.log(errorThrown) : _VERBOSE;
_VERBOSE ? console.log(jqXHR.responseText) : _VERBOSE;
$('#tuto_mapa_occ').loading('stop');
$('#hist_fecha_container').loading('stop');
$("#specie_next").css('visibility', 'hidden');
}
});
}
......@@ -2351,7 +2401,8 @@ var map_module = (function (url_geoserver, workspace, verbose, url_zacatuche) {
"sfecha": _sin_fecha,
"sfosil": _con_fosil,
"grid_res": grid_res_val,
"footprint_region": footprint_region
"footprint_region": footprint_region,
// "disease": disease
},
beforeSend: function (xhr) {
xhr.setRequestHeader('X-Test-Header', 'test-value');
......
......@@ -11,6 +11,10 @@ var module_nicho = (function () {
var _VERBOSE = true;
var _REGION_SELECTED;
var _REGION_TEXT_SELECTED;
var _DISEASE_SELECTED;
var _DISEASE_TEXT_SELECTED;
var _AGENT_SELECTED;
var _AGENT_TEXT_SELECTED;
// actualizar este arreglo si cambian los ids de las secciones
var _SCROLL_SECTIONS = ["section0","section1","map","myScrollableBlockEpsilonDecil","histcontainer_row"];
......@@ -264,6 +268,31 @@ var module_nicho = (function () {
});
$("#disease_selected").change(function (e) {
console.log("Cambiando a " + ($("#disease_selected").val()));
_DISEASE_SELECTED = ($("#disease_selected").val());
_DISEASE_TEXT_SELECTED = $("#disease_selected option:selected").text();
//_map_module_nicho.changeRegionView(_DISEASE_SELECTED);
_regenMessage();
});
$("#agent_selected").change(function (e) {
console.log("Cambiando a " + ($("#agent_selected").val()));
_AGENT_SELECTED = ($("#agent_selected").val());
_AGENT_TEXT_SELECTED = $("#agent_selected option:selected").text();
//_map_module_nicho.changeRegionView(_AGENT_SELECTED);
_regenMessage();
});
$("#grid_resolution").change(function (e) {
......@@ -273,6 +302,14 @@ var module_nicho = (function () {
});
$("#disease_selected").change(function (e) {
_VERBOSE ? console.log("Cambia enfermedad") : _VERBOSE;
// No es necesario regenerar resultados
_regenMessage();
});
// checkbox que se activa cuando se desea realizar el proceso de validación. (Proceso de validación todavia no implementado)
$("#chkApriori").click(function (event) {
......@@ -425,6 +462,10 @@ var module_nicho = (function () {
var region = _REGION_SELECTED;
var disease = _DISEASE_SELECTED;
var agent = _AGENT_SELECTED
var groupDatasetTotal = _componente_target.getGroupDatasetTotal()
console.log(groupDatasetTotal)
......@@ -464,14 +505,126 @@ var module_nicho = (function () {
var grid_res = $("#grid_resolution").val();
var footprint_region = parseInt($("#footprint_region_select").val());
var disease = $("#disease_selected").val();
var agent = $("#agent_selected").val();
// _map_module_nicho.loadD3GridMX(val_process, grid_res, footprint_region, _taxones);
_map_module_nicho.busca_especie_grupo(_taxones, footprint_region, val_process, grid_res);
_map_module_nicho.busca_especie_grupo(_taxones, footprint_region, val_process, grid_res, disease, agent);
});
$("#agent_selected").change(function() {
let var_obj = $(this).val();
let diseases = document.getElementById("disease_selected");
switch (var_obj){
case "Hospederos":
fetch("http://10.90.0.42:4006/graphql/hospederos/",{
method: "POST",
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({ query: 'query { get_diseases_hospederos {name}}'}),
})
.then(res => res.json())
.then((function(resp){
console.log(resp);
let data = resp ["data"]
let disease = data["get_diseases_hospederos"]
var select = document.getElementById("disease_selected")
$('select option[value="dis_default"]').attr("selected",true);
try {
let actual_modifiers =
$(".disease_opt").remove();
} catch (error) {
console.log("no diseases")
}
for (let index = 0; index < disease.length; index++){
console.log(disease[index]["name"])
var opt = document.createElement('option');
opt.setAttribute("class", "disease_opt")
opt.value = disease[index]["name"];
opt.innerHTML = disease[index]["name"];
select.append(opt);
}
}));
break;
case "Vectores":
fetch("http://10.90.0.42:4008/graphql/vectores/",{
method: "POST",
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({ query: 'query { get_diseases_vectores {name}}'}),
})
.then(res => res.json())
.then((function(resp){
console.log(resp);
let data = resp ["data"]
let disease = data["get_diseases_vectores"]
var select = document.getElementById("disease_selected")
$('select option[value="dis_default"]').attr("selected",true);
try {
let actual_modifiers =
$(".disease_opt").remove();
} catch (error) {
console.log("no diseases")
}
for (let index = 0; index < disease.length; index++){
console.log(disease[index]["name"])
var opt = document.createElement('option');
opt.setAttribute("class", "disease_opt")
opt.value = disease[index]["name"];
opt.innerHTML = disease[index]["name"];
select.append(opt);
}
}));
break;
case "Patogenos":
fetch("http://10.90.0.42:4007/graphql/patogenos/",{
method: "POST",
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({ query: 'query { get_diseases_patogenos {name}}'}),
})
.then(res => res.json())
.then((function(resp){
console.log(resp);
let data = resp ["data"]
let disease = data["get_diseases_patogenos"]
var select = document.getElementById("disease_selected")
$('select option[value="dis_default"]').attr("selected",true);
try {
let actual_modifiers =
$(".disease_opt").remove();
} catch (error) {
console.log("no diseases")
}
for (let index = 0; index < disease.length; index++){
console.log(disease[index]["name"])
var opt = document.createElement('option');
opt.setAttribute("class", "disease_opt")
opt.value = disease[index]["name"];
opt.innerHTML = disease[index]["name"];
select.append(opt);
}
}));
break;
default:
break;
}
});
$("")
$("#show_gen").click(function (e) {
_VERBOSE ? console.log("show_gen") : _VERBOSE;
......@@ -518,6 +671,10 @@ var module_nicho = (function () {
// data_link.grid_res = parseInt($("#grid_resolution").val());
data_link.grid_res = $("#grid_resolution").val();
data_link.footprint_region = $("#footprint_region_select").val();
data_link.disease = $("#disease_selected").val();
data_link.grid_agent = $("#agent_selected").val();
data_link.discardedFilterids = _map_module_nicho.get_discardedPoints().values().map(function (value) {
return value.feature.properties.gridid
......@@ -555,10 +712,15 @@ var module_nicho = (function () {
console.log("source")
_REGION_SELECTED = ($("#footprint_region_select").val() !== null && $("#footprint_region_select").val() !== undefined) ? parseInt($("#footprint_region_select").val()) : _REGION_SELECTED;
_DISEASE_SELECTED = ($("#disease_selected").val() !== null && $("#disease_selected").val() !== undefined) ? parseInt($("#disease_selected").val()) : _DISEASE_SELECTED;
_AGENT_SELECTED = ($("#agent_selected").val() !== null && $("#agent_selected").val() !== undefined) ? parseInt($("#agent_selected").val()): _AGENT_SELECTED;
_GRID_RES = $("#grid_resolution").val();
console.log("REGION_SELECTED: " + _REGION_SELECTED);
console.log("_GRID_RES: " + _GRID_RES);
console.log("_DISEASE_SELECTED" + _DISEASE_SELECTED);
console.log("_AGENT_SELECTED" + _AGENT_SELECTED);
console.log("Term: " + request.term);
$.ajax({
......@@ -608,7 +770,7 @@ var module_nicho = (function () {
jQuery(function(){
jQuery('#date_timepicker_start').datetimepicker({
scrollInput : false,
format:'Y-m-d',
format:'Yyyy',
onShow:function( ct ){
this.setOptions({
maxDate:jQuery('#date_timepicker_end').val()?jQuery('#date_timepicker_end').val():false
......@@ -799,6 +961,10 @@ var module_nicho = (function () {
var region = _json_config.region ? parseInt(_json_config.region) : 1;
var disease = _json_config.disease ? parseInt(_json_config.disease) : 1;
var agente = _json_config.agente ? parseInt(_json_config.agent) : 1;
// var rango_fechas = minFec != undefined && maxFec != undefined ? [minFec, maxFec] : undefined;
// recover deleted items
......@@ -826,7 +992,7 @@ var module_nicho = (function () {
}
// _procesaValoresEnlace(sfilters, filters, chkVal, chkPrb, chkApr, chkFec, chkOcc, rango_fechas, chkFosil, gridRes, region, map_dPoints, chkValTemp);
_procesaValoresEnlace(sfilters, filters, chkVal, chkPrb, chkApr, chkFec, chkOcc, minFec, maxFec, minFecVal, maxFecVal, chkFosil, gridRes, region, map_dPoints, chkValTemp);
_procesaValoresEnlace(sfilters, filters, chkVal, chkPrb, chkApr, chkFec, chkOcc, minFec, maxFec, minFecVal, maxFecVal, chkFosil, gridRes, region, disease, agente, map_dPoints, chkValTemp);
$("#show_gen").css('visibility', 'hidden');
......@@ -936,7 +1102,7 @@ var module_nicho = (function () {
* @param {integer} gridRes - Resolución de la malla para ser considerado en los cálculos
*/
// function _procesaValoresEnlace(subgroups_target, subgroups, chkVal, chkPrb, chkApr, chkFec, chkOcc, rango_fechas, chkFosil, gridRes, region, map_dPoints, chkValTemp) {
function _procesaValoresEnlace(subgroups_target, subgroups, chkVal, chkPrb, chkApr, chkFec, chkOcc, minFec, maxFec, minFecVal, maxFecVal, chkFosil, gridRes, region, map_dPoints, chkValTemp) {
function _procesaValoresEnlace(subgroups_target, subgroups, chkVal, chkPrb, chkApr, chkFec, chkOcc, minFec, maxFec, minFecVal, maxFecVal, chkFosil, gridRes, region, disease, agente, map_dPoints, chkValTemp) {
_VERBOSE ? console.log("_procesaValoresEnlace") : _VERBOSE;
......@@ -1019,6 +1185,12 @@ var module_nicho = (function () {
$('#footprint_region_select option[value=' + region + ']').attr('selected', 'selected');
$('#disease_selected option[value=' + disease + ']').attr('selected, selected');
$('#agent_selected option[value=' + agente + ']').attr('selected, selected');
console.log(subgroups_target)
console.log(subgroups)
......@@ -1170,9 +1342,14 @@ var module_nicho = (function () {
var mapa_prob = $("#chkMapaProb").is(':checked');
var grid_res = $("#grid_resolution").val();
var footprint_region = parseInt($("#footprint_region_select").val());
var disease = $("#disease_selected").val();
var agent = $("#agent_selected").val();
console.log("grid_res: " + grid_res);
console.log("footprint_region: " + footprint_region);
console.log("disease" + disease);
console.log("agent"+ agent);
var fossil = $("#chkFosil").is(':checked');
......@@ -1206,7 +1383,7 @@ var module_nicho = (function () {
// Falta agregar la condición makesense.
// Cuando se realiza una consulta por region seleccioanda se verica que la especie objetivo se encuentre dentro de esta area
_res_display_module_nicho.refreshData(num_items, val_process, slider_value, min_occ, mapa_prob, rango_fechas, chkFecha, fossil, grid_res, footprint_region, val_process_temp);
_res_display_module_nicho.refreshData(num_items, val_process, slider_value, min_occ, mapa_prob, rango_fechas, chkFecha, fossil, grid_res, footprint_region, disease, agent, val_process_temp);
}
......
......@@ -2776,6 +2776,10 @@ var res_display_module = (function (verbose, url_zacatuche) {
// console.log(data_body_request)
//let query = 'query{occurrences_by_taxon_' + nodo + '(query: "nombreenfermedad = \''+ _DISEASE_SELECTED + '\' AND '+ _PARENT_FIELD.toLowerCase() +' = \'' + _LABEL_VALUE +'\' AND longituddecimal ='+ long +' AND latituddecimal = ' + lat + '"){epitetoespecifico reino aniocolecta genero localidad sexo individuosinfectados gridid_'+ _grid_res + '}}'
if(isdeletecell){
fetch(_url_zacatuche + "/niche/especie/getIDCellFromCoordinates", {
......@@ -2787,6 +2791,8 @@ var res_display_module = (function (verbose, url_zacatuche) {
})
.then(resp => resp.json())
.then(respuesta => {
console.log(_taxones)
console.log(respuesta.data)
if (respuesta.ok) {
......@@ -2820,42 +2826,27 @@ var res_display_module = (function (verbose, url_zacatuche) {
}
else{
fetch(_url_zacatuche + "/niche/especie/getCellOcurrences", {
method: "POST",
body: JSON.stringify(data_body_request),
headers: {
"Content-Type": "application/json"
}
})
.then(resp => resp.json())
.then(respuesta => {
if (respuesta.ok) {
var data = respuesta.data;
_VERBOSE ? console.log(data) : _VERBOSE;
if (data.length > 0) {
var htmltable = _createOccTableFromData(data);
if (htmltable === "")
return;
_map_module_nicho.showPopUp(htmltable, [lat, long], true);
if (_AGENT_SELECTED == 'Hospederos')
var _url = 'http://10.90.0.42:4006/graphql/hospederos/'
else if (_AGENT_SELECTED == 'Patogenos')
var _url = "http://10.90.0.42:4007/graphql/patogenos/"
else
var _url = "http://10.90.0.42:4008/graphql/vectores/"
let nodo = _AGENT_SELECTED.toLowerCase()
let query = 'query{occurrences_by_taxon_' + nodo + '(query: "nombreenfermedad = \''+ _DISEASE_SELECTED + '\' AND '+ _PARENT_FIELD.toLowerCase() +' = \'' + _LABEL_VALUE +'\' AND longituddecimal ='+ long +' AND latituddecimal = ' + lat + '"){epitetoespecifico reino aniocolecta genero localidad sexo individuosinfectados gridid_'+ grid_res + '}}'
console.log(query)
}
$.ajax({
method: "POST",
url: _url,
contentType: "application/json",
data: JSON.stringify({query: query}),
success: function (resp) {
console.log(resp)
}
$('#map2').loading('stop');
})
.catch(err => {
$('#map2').loading('stop');
_VERBOSE ? console.log("error: " + err) : _VERBOSE;
});
}
......
var _PARENT_FIELD = "";
var _LABEL_VALUE = "";
var _AGENT_SELECTED = "";
/**
* Módulo variable, utilizado para crear y gestionar los selectores de grupos de variables en nicho ecológico y comunidad ecológica.
......@@ -37,8 +40,13 @@ var variable_module = (function (verbose, url_zacatuche) {
var _available_variables = [];
var _REGION_SELECTED = 1;
var _REGION_SELECTED = 1
var _GRID_RES = "state";
// var _AGENT_SELECTED = "hospedero";
// var _PARENT_FIELD = "";
// var _LABEL_VALUE = "";
// var map_taxon = new Map()
// map_taxon.set("reino", "kingdom");
......@@ -103,8 +111,8 @@ var variable_module = (function (verbose, url_zacatuche) {
var sp_items = ['a_item_reino', 'a_item_phylum', 'a_item_clase', 'a_item_orden', 'a_item_familia', 'a_item_genero','a_item_especie'];
var sp_parent_field = ['reinovalido', 'phylumdivisionvalido', 'clasevalida', 'ordenvalido', 'familiavalida', 'generovalido','especieepiteto'];
var sp_data_field = ['phylumdivisionvalido', 'clasevalida', 'ordenvalido', 'familiavalida', 'generovalido', 'especieepiteto']; //'especievalidabusqueda'
var sp_parent_field = ['reino', 'phylum', 'clase', 'orden', 'familia', 'genero','epitetoespecifico','epitetoinfraespecifico'];
var sp_data_field = ['phylum', 'clase', 'orden', 'familia', 'genero','epitetoespecifico','epitetoinfraespecifico']; //'especievalidabusqueda'
var NUM_ABIO = 20;
var NIVEL_REINO = 2
var NIVEL_PHYLUM = 3
......@@ -142,6 +150,8 @@ var variable_module = (function (verbose, url_zacatuche) {
// Evento generado cuando se selecciona un grupo de variables climáticas, realiza la carga del árbol de selección del grupo seleccionado.
self.loadTreeVarRaster = function () {
......@@ -544,6 +554,8 @@ var variable_module = (function (verbose, url_zacatuche) {
});
var input_sp = $('<input/>')
.attr('id', 'text_variable' + "_" + id)
.attr('type', 'text')
......@@ -557,38 +569,72 @@ var variable_module = (function (verbose, url_zacatuche) {
_REGION_SELECTED = ($("#footprint_region_select").val() !== null && $("#footprint_region_select").val() !== undefined) ? parseInt($("#footprint_region_select").val()) : _REGION_SELECTED;
_GRID_RES = $("#grid_resolution").val();
_DISEASE_SELECTED = $("#disease_selected").val()
_AGENT_SELECTED = $("#agent_selected").val();
console.log("REGION_SELECTED: " + _REGION_SELECTED);
console.log("_GRID_RES: " + _GRID_RES);
console.log("_AGENT_SELECTED: " + _AGENT_SELECTED);
console.log("_DISEASE_SELECTED: " + _DISEASE_SELECTED);
if (_AGENT_SELECTED == 'Hospederos')
var _url = 'http://10.90.0.42:4006/graphql/hospederos/'
else if (_AGENT_SELECTED == 'Patogenos')
var _url = "http://10.90.0.42:4007/graphql/patogenos/"
else
var _url = "http://10.90.0.42:4008/graphql/vectores/"
let nodo = _AGENT_SELECTED.toLowerCase()
var query = 'query{occurrences_by_taxon_' + nodo + '(query: "nombreenfermedad = \''+ _DISEASE_SELECTED + '\' AND '+ varfield.toLowerCase() +' LIKE \''+ request.term.charAt(0).toUpperCase() +
request.term.slice(1) +'%\' "){'+ varfield.toLowerCase() +'}}'
let lst = []
console.log(query)
$.ajax({
url: _url_zacatuche + "/niche/especie/getEntList",
dataType: "json",
type: "post",
data: {
searchStr: request.term,
nivel: self.varfilter_selected[1],
source: 0, // source para saber si viene de objetivo o el target
footprint_region: _REGION_SELECTED,
grid_res: _GRID_RES
},
method: "POST",
url: _url,
contentType: "application/json",
data: JSON.stringify({query: query}),
success: function (resp) {
let list = resp["data"]
console.log(resp)
response($.map(resp.data, function (item) {
let uniqueObjArray = [
...new Map(item.map((item) => [item["name"], item])).values(),
];
//uniqueObjArray.forEach(function(obj) {
// obj.reinovalido = obj.reino;
// delete obj.reino;
// });
console.log(uniqueObjArray)
_VERBOSE ? console.log(item) : _VERBOSE;
for (let i = 0; i < uniqueObjArray.length; i++) {
var opt = uniqueObjArray[i]
_VERBOSE ? console.log(opt) : _VERBOSE;
console.log(self.varfilter_selected[1]);
return{
label: item[self.varfilter_selected[1]],
id: item[self.varfilter_selected[1]]
return {
label: opt[self.varfilter_selected[1]],
id: opt[self.varfilter_selected[1]]
};
}
}));
}
});
})
},
minLength: 2,
......@@ -829,6 +875,8 @@ var variable_module = (function (verbose, url_zacatuche) {
// Es un evento generado cuando se realiza la carga del árbol de selección (jstree: https://www.jstree.com/) que contiene el selector de variables.
self.loadNodes = function () {
......@@ -854,24 +902,42 @@ var variable_module = (function (verbose, url_zacatuche) {
_REGION_SELECTED = ($("#footprint_region_select").val() !== null && $("#footprint_region_select").val() !== undefined) ? parseInt($("#footprint_region_select").val()) : _REGION_SELECTED;
_GRID_RES = $("#grid_resolution").val();
_AGENT_SELECTED = $("#agent_selected").val();
console.log("REGION_SELECTED: " + _REGION_SELECTED);
console.log("_GRID_RES: " + _GRID_RES);
console.log("_AGENT_SELECTED" + _AGENT_SELECTED);
if (_AGENT_SELECTED == 'Hospederos')
var _url = 'http://10.90.0.42:4006/graphql/hospederos/'
else if (_AGENT_SELECTED == 'Patogenos')
var _url = "http://10.90.0.42:4007/graphql/patogenos/"
else
var _url = "http://10.90.0.42:4008/graphql/vectores/"
let nodo = _AGENT_SELECTED.toLowerCase()
let query = 'query{occurrences_by_taxon_' + nodo + '(query: "nombreenfermedad = \''+ _DISEASE_SELECTED + '\' AND '+ varfield.toLowerCase() +' = \'' + self.value_vartree +'\' "){'+ field_r +'}}'
console.log(query)
$.ajax({
url: _url_zacatuche + "/niche/especie/getVariables",
dataType: "json",
type: "post",
data: {
"field": field_r,
"parentfield": parentfield_r,
"parentitem": self.value_vartree,
"footprint_region": _REGION_SELECTED,
"grid_res": _GRID_RES
},
method: "POST",
url: _url,
contentType: "application/json",
data: JSON.stringify({query: query}),
success: function (resp) {
console.log(resp)
let data2 = resp.data["occurrences_by_taxon_"+ nodo]
console.log(data2)
let uniqueObjArray = [
...new Map(data2.map((item) => [item["name"], item])).values(),
];
console.log(uniqueObjArray)
let data = uniqueObjArray
data = resp.data;
var current_node = $('#jstree_variables_species_' + id).jstree(true).get_node($("#root"));
//current_node.prop('title', );
......@@ -887,9 +953,17 @@ var variable_module = (function (verbose, url_zacatuche) {
for (i = 0; i < data.length; i++) {
var idNode = "";
// console.log(data[i].name)
let result = field_r;
console.log(Object.values(data))
var namesp1 = data[i]
var namesp = data[i].name.replace(/ /g,"").replace(/\%/g,"").replace(/\)/g,"").replace(/\(/g,"").replace(/\./g,"").replace(/,/g,"")
var namesp = namesp1[field_r]
console.log(namesp)
var namesp = namesp1[field_r].replace(/ /g,"").replace(/\%/g,"").replace(/\)/g,"").replace(/\(/g,"").replace(/\./g,"").replace(/,/g,"")
// console.log(namesp)
if ($("#" + namesp).length > 0) {
......@@ -901,7 +975,7 @@ var variable_module = (function (verbose, url_zacatuche) {
console.log("idNode: " + idNode)
var default_son = self.level_vartree < 8 ? [{text: "cargando..."}] : [];
var label_taxon = self.level_vartree < 8 ? data[i].name + " (spp: " + data[i].spp + ")" : data[i].name;
var label_taxon = self.level_vartree < 8 ? namesp1[field_r] : namesp1[field_r];
// label_taxon = self.level_vartree == 8 ? self.value_vartree + " " + label_taxon : label_taxon;
......@@ -938,9 +1012,9 @@ var variable_module = (function (verbose, url_zacatuche) {
var description_complement = '';
if(data[0].name.split(' ').length > 1 && field_r === 'especievalidabusqueda'){
if(namesp1[field_r].split(' ').length > 1 && field_r === 'especievalidabusqueda'){
description_complement += data[0].name.split(' ')[1];
description_complement += namesp1[field_r].split(' ')[1];
}
......@@ -955,11 +1029,120 @@ var variable_module = (function (verbose, url_zacatuche) {
}
}
})
}
$("#disease_selected").change(function () {
_VERBOSE ? console.log("self.loadNodes0") : _VERBOSE;
// se incrementa level para asignar el nivel adecuado a los hijos de la raiz
// la funcion es llamda dos veces, por tantro se decidio utilizar el arreglo + 1, en lufar de utilzar la variable global "level_vartree"
self.level_vartree = 5;
_VERBOSE ? console.log("level_vartree: " + self.level_vartree) : _VERBOSE;
console.log(self.varfilter_selected);
var field_r = 'orden';
var parentfield_r = self.parent_field_vartree;
if(parseInt(self.level_vartree) > 8){
field_r = 'especievalidabusqueda';
parentfield_r = '';
}
_VERBOSE ? console.log(self.field_vartree) : _VERBOSE;
_VERBOSE ? console.log(self.value_vartree) : _VERBOSE;
_REGION_SELECTED = ($("#footprint_region_select").val() !== null && $("#footprint_region_select").val() !== undefined) ? parseInt($("#footprint_region_select").val()) : _REGION_SELECTED;
_GRID_RES = $("#grid_resolution").val();
_AGENT_SELECTED = $("#agent_selected").val();
_DISEASE_SELECTED = $("#disease_selected").val()
console.log("REGION_SELECTED: " + _REGION_SELECTED);
console.log("_GRID_RES: " + _GRID_RES);
console.log("_AGENT_SELECTED" + _AGENT_SELECTED);
if (_AGENT_SELECTED == 'Hospederos')
var _url = 'http://10.90.0.42:4006/graphql/hospederos/'
else if (_AGENT_SELECTED == 'Patogenos')
var _url = "http://10.90.0.42:4007/graphql/patogenos/"
else
var _url = "http://10.90.0.42:4008/graphql/vectores/"
let nodo = _AGENT_SELECTED.toLowerCase()
let query = 'query{occurrences_by_taxon_' + nodo + '(query: "nombreenfermedad = \''+ _DISEASE_SELECTED + '\' "){clase}}'
console.log(query)
$.ajax({
method: "POST",
url: _url,
contentType: "application/json",
data: JSON.stringify({query: query}),
success: function (resp, event, ui) {
console.log(resp)
let data2 = resp.data["occurrences_by_taxon_" + nodo]
console.log(data2)
let uniqueObjArray = [
...new Map(data2.map((item) => [item["name"], item])).values(),
];
console.log(uniqueObjArray)
let data = uniqueObjArray
console.log(ui);
$('#jstree_variables_species_' + id).jstree("destroy").empty();
$('#jstree_variables_species_' + id).on('open_node.jstree', self.getTreeVar);
$("#jstree_variables_species_" + id).on('changed.jstree', self.getChangeTreeVar);
$("#jstree_variables_species_" + id).on('loaded.jstree', self.loadNodes);
self.value_vartree = ui.item.id;
self.field_vartree = self.varfilter_selected[0];
self.parent_field_vartree = self.varfilter_selected[1];
self.level_vartree = self.varfilter_selected[2];
// _VERBOSE ? console.log("nivel") : _VERBOSE;
_VERBOSE ? console.log(self.level_vartree) : _VERBOSE;
var icon = parseInt(self.level_vartree) === 8 ? "plugins/jstree/images/dna.png" : "plugins/jstree/dist/themes/default/throbber.gif"
// _VERBOSE ? console.log(self.level_vartree) : _VERBOSE;
var tree_reinos = [{
"text": self.value_vartree,
"id": "root",
"attr": {"nivel": self.level_vartree, "type": _TYPE_TAXON},
'state': {'opened': true},
"icon": icon
}];
$('#jstree_variables_species_' + id).jstree({
'plugins': ["wholerow", "checkbox"],
'core': {
'data': tree_reinos,
'themes': {
'name': 'proton',
'responsive': true
},
'check_callback': true
}
});
}
})
})
// Evento generado cuando se realiza la acción de abrir una rama del árbol de selección, realiza la carga de los elementos que componen la rama a la cual se desea tener acceso.
self.getTreeVar = function (e, d) {
......@@ -981,28 +1164,28 @@ var variable_module = (function (verbose, url_zacatuche) {
$("#jstree_variables_species_" + id).jstree(true).set_icon(d.node.id, "./plugins/jstree/dist/themes/default/throbber.gif");
if (d.node.original.attr.nivel == 2) {
parent_field = "reinovalido"
next_field = "phylumdivisionvalido";
parent_field = "reino"
next_field = "phylum";
next_nivel = 3;
} else if (d.node.original.attr.nivel == 3) {
parent_field = "phylumdivisionvalido"
next_field = "clasevalida";
parent_field = "phylum"
next_field = "clase";
next_nivel = 4;
} else if (d.node.original.attr.nivel == 4) {
parent_field = "clasevalida"
next_field = "ordenvalido";
parent_field = "clase"
next_field = "orden";
next_nivel = 5;
} else if (d.node.original.attr.nivel == 5) {
parent_field = "ordenvalido"
next_field = "familiavalida";
parent_field = "orden"
next_field = "familia";
next_nivel = 6;
} else if (d.node.original.attr.nivel == 6) {
parent_field = "familiavalida"
next_field = "generovalido";
parent_field = "familia"
next_field = "genero";
next_nivel = 7;
} else if (d.node.original.attr.nivel == 7) {
parent_field = "generovalido"
next_field = "especieepiteto";
parent_field = "genero"
next_field = "epitetoespecifico";
next_nivel = 8;
} else {
$('#jstree_variables_species_' + id).tooltip('hide');
......@@ -1027,21 +1210,53 @@ var variable_module = (function (verbose, url_zacatuche) {
console.log("REGION_SELECTED: " + _REGION_SELECTED);
console.log("_GRID_RES: " + _GRID_RES);
if (_AGENT_SELECTED == 'Hospederos')
var _url = 'http://10.90.0.42:4006/graphql/hospederos/'
else if (_AGENT_SELECTED == 'Patogenos')
var _url = "http://10.90.0.42:4007/graphql/patogenos/"
else
var _url = "http://10.90.0.42:4008/graphql/vectores/"
let nodo = _AGENT_SELECTED.toLowerCase()
let query = 'query{occurrences_by_taxon_' + nodo + '(query: "nombreenfermedad = \''+ _DISEASE_SELECTED + '\' AND '+ parent_field.toLowerCase() +' = \'' + label_value +'\' "){'+ next_field +'}}'
console.log(query)
$.ajax({
url: _url_zacatuche + "/niche/especie/getVariables",
dataType: "json",
type: "post",
data: {
"field": next_field,
"parentfield": parent_field,
// "parentitem": d.node.text.split(" ")[0],
"parentitem": label_value,
"footprint_region": _REGION_SELECTED,
"grid_res": _GRID_RES
},
method: "POST",
url: _url,
contentType: "application/json",
data: JSON.stringify({query: query}),
success: function (resp) {
console.log(resp)
let data2 = resp.data["occurrences_by_taxon_" + nodo]
console.log(data2)
console.log(data2[0])
data = resp.data;
let uniqueObjArray = []
for (let i = 0; i < data2.length; i++) {
let val = data2[i];
//console.log(val)
if(uniqueObjArray.indexOf(val) === -1) {
uniqueObjArray.push(val);
}
}
let uniqueObjArray1 = [
...new Map( uniqueObjArray.map((item) => [item[next_field], item])).values(),
];
console.log(uniqueObjArray1)
let data = uniqueObjArray1
$('ul').tooltip('hide');
$('li').tooltip('hide');
......@@ -1053,7 +1268,8 @@ var variable_module = (function (verbose, url_zacatuche) {
for (i = 0; i < data.length; i++) {
var idNode = "";
var name_variable = data[i].name
var camp = data[i]
var name_variable = camp[next_field]
console.log("name_variable: " + name_variable)
......@@ -1064,11 +1280,11 @@ var variable_module = (function (verbose, url_zacatuche) {
} else {
// ._VERBOSE ? console.log("nuevo_id") : _VERBOSE;
idNode = data[i].id;
idNode = camp[next_field];
}
var default_son = next_nivel < 8 ? [{text: "cargando..."}] : [];
var label_taxon = next_nivel < 8 ? data[i].name + " (spp: " + data[i].spp + ")" : data[i].name;
var label_taxon = next_nivel < 8 ? camp[next_field] : camp[next_field]; //" (spp: " + data[i].spp + ")"
var newNode = {
id: idNode,
......@@ -1366,7 +1582,20 @@ var variable_module = (function (verbose, url_zacatuche) {
_VERBOSE ? console.log("self.addOtherGroup") : _VERBOSE;
// console.log(idTree);
// console.log(arraySelected);
console.log(arraySelected);
const iterator = arraySelected.values();
for (const value of iterator) {
var variable = value
console.log(variable)
_PARENT_FIELD = variable["level"]
_LABEL_VALUE = variable["label"]
console.log(_PARENT_FIELD)
console.log(_LABEL_VALUE)
}
// console.log(gpoName);
// console.log(idDivContainer);
// console.log(typeVar);
......
......@@ -6,7 +6,7 @@ lb_occ_min = Min. Celdas con ocurrencia (nj)
lb_apriori = A\u00f1adir a priori
lb_mapprob = Mapa de probabilidad
lb_reg_fecha = Incluir registros sin fecha
lb_range_fecha = Filtrar por fecha
lb_range_fecha = Filtrar por año
btn_regenerar = Regenerar
lb_genera_red = Generar red
lb_info_slider = ATR: Atracci\u00f3n entre nodos
......
......@@ -21,6 +21,7 @@ a_taxon = Grupos de interés
a_clima = Climáticas
a_topo = Topográficas
a_raster = Raster
a_socio = Socioeconómicas
lb_occ = Ocurrencias grupo
lb_occ_celda = Área con ocurrencias del grupo (ni)
btn_variable = Escoge Grupo
......@@ -165,7 +166,7 @@ lb_fosil = Fósiles
lb_apriori = Añadir a priori
lb_mapprob = Mapa de probabilidad
lb_reg_fecha = Registros sin fecha
lb_range_fecha = Filtrar por fecha
lb_range_fecha = Filtrar por año
labelFecha = {0} - {1}
reload_map = Filtrar
see_species = Ver Grupo de interés
......
......@@ -21,6 +21,7 @@ a_taxon = Taxonomic
a_clima = Climatic
a_topo = Others
a_raster = Raster
a_socio = Socioeconómicas
lb_occ = Species occurrences
lb_occ_celda = Cells with species occurrences
btn_variable = Taxon
......
......@@ -164,7 +164,7 @@ lb_fosil = Fósiles
lb_apriori = Añadir a priori
lb_mapprob = Mapa de probabilidad
lb_reg_fecha = Registros sin fecha
lb_range_fecha = Filtrar por fecha
lb_range_fecha = Filtrar por año
labelFecha = {0} - {1}
reload_map = Filtrar
see_species = Ver especies
......
File mode changed from 100755 to 100644
File mode changed from 100755 to 100644
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