//Espera a que la variable data este definida, la primera variable; function waitData(fn) { return function (data) { var _args = arguments; var _this = this; var wait = setInterval(function () { if (data) { clearInterval(wait); fn.apply(_this, _args); } }, 500); }; } // Función para representar la gráfica de sunburst1 var renderSunburstLegend = waitData(function (data, container, graph) { function filaClick(id) { return function () { graph.logger.trigger("zoom", id); }; } // Preparo un contenedor container = $(container); var wrapper = $("
"); // Extraigo datos de la gráfica //var childrens = grafica.graph.data.children var childrens = data.children; if (childrens) { // Itera sobre los children generando filas for (var key in childrens) { var code = childrens[key].code; // console.log('Hijos:'); // console.log(childrens[key]); var color = childrens[key].color; var text = childrens[key].name; var value = shortFormat(childrens[key].size); var fila = $("
  • "); fila.on("click", filaClick(childrens[key].code)); fila.append( $( "" ) ); fila.append( $("' + text + "") ); fila.append($("" + value + "")); wrapper.append(fila); } } else if (typeof data.code === "undefined") { var color = grafica.graph.color(data.code); var text = data.name; var value = shortFormat(data.size); var fila = $("
  • "); fila.on("click", filaClick(data.code)); fila.append( $( "" ) ); fila.append( $("' + text + "") ); fila.append($("" + value + "")); wrapper.append(fila); } // Inserta la gráfica container.html(wrapper); }); function renderTreemapLegend(data, container, graph) { // Preparo un contenedor function filaClick(id) { return function () { graph.logger.trigger("zoomTo", id); }; } container = $(container); var wrapper = $("
    "); // Extraigo datos de la gráfica //var childrens = grafica.graph.data.children if (data) { var childrens = data.children; if (childrens) { // Itera sobre los children generando filas for (var key in childrens) { var code = childrens[key].code; // console.log('Hijos:'); // console.log(childrens[key]); var color = childrens[key].color; var text = childrens[key].name; var value = shortFormat(childrens[key].size); var fila = $("
  • "); fila.on("click", filaClick(code)); fila.append( $( "" ) ); fila.append( $( "' + text + "" ) ); fila.append($("" + value + "")); wrapper.append(fila); } } else { var color = data.color; var text = data.name; var code = data.code; var value = shortFormat(data.size); var fila = $("
  • "); fila.on("click", filaClick(code)); fila.append( $( "" ) ); fila.append( $("' + text + "") ); fila.append($("" + value + "")); wrapper.append(fila); } // Inserta la gráfica container.html(wrapper); } } // Función para representar la gráfica de 'ejecucion' function renderLineLegend(data, element, graph) { function filaClick(id) { return function () { graph.logger.trigger("select", id); }; } // Selecciono los elementos var container = $(element); // Preparo un contenedor var wrapper = $("
    "); // Itera sobre los datos generando filas en la leyenda if (data && data[0] && Array.isArray(data[0].values)) { for (key in data) { var name = data[key].name; var color = data[key].color; var fila = $("
  • "); fila.on("click", filaClick(name)); fila.append( $( "" ) ); fila.append( $("' + name + "") ); wrapper.append(fila); } container.html(wrapper); } else if (data) { data.forEach(function (item) { var name = item.name; var color = item.color; var value = item.marker && item.marker.value; var fila = $("
  • "); fila.on("click", filaClick(name)); fila.append( $( "" ) ); fila.append( $("' + name + "") ); if (value >= 0) fila.append( $("" + shortFormat(value) + "") ); wrapper.append(fila); }); container.html(wrapper); } // Inserta la gráfica } // Función para representar la gráfica de 'gastosx' function renderCircularLegend(data, element, graph) { function filaClick(id) { return function () { graph.logger.trigger("select", id); }; } // Selecciono los elementos var container = $(element); // Preparo un contenedor var wrapper = $("
    "); // Extraigo datos de la gráfica // Preparo los datos for (index in data) { var name = data[index].name; var color = data[index].color; var value = data[index].size; value = shortFormat(value); var fila = $( "
  • " ); fila.append( $( "" ) ); fila.append( $("' + name + "") ); fila.append($("" + value + "")); fila.on("click", filaClick(name)); wrapper.append(fila); } // Inserta la gráfica container.html(wrapper); } function renderLegend(data, element, graph) { // Selecciono los elementos var container = $(element); // Preparo un contenedor var wrapper = $("
    "); // Extraigo datos de la gráfica // Preparo los datos for (index in data) { var name = data[index].name; var color = data[index].color; var value = data[index].size; value = shortFormat(value); var fila = $("
  • "); fila.append( $( "" ) ); fila.append( $("' + name + "") ); fila.append($("" + value + "")); wrapper.append(fila); } // Inserta la gráfica container.html(wrapper); } function renderMapLegend(data, element, graph) { // Selecciono los elementos var container = $(element); // Preparo un contenedor var wrapper = $("
    "); // Extraigo datos de la gráfica // Preparo los datos if (graph) { var colors = graph.color.range(); var intervals = graph.color.quantiles(); for (let index = 0; index < colors.length; index++) { var color = colors[index]; var name = index == 0 ? "<" + numberFormat(intervals[0]) : ">=" + numberFormat(intervals[index - 1]); var fila = $("
  • "); fila.append( $( "" ) ); fila.append( $("' + name + "") ); wrapper.append(fila); } } // Inserta la gráfica container.html(wrapper); } function renderMapDataLegend(data, element, graph) { var wait; var call = function () { if ( graph.data && graph.data.length > 0 && graph.data[0].properties && typeof graph.data[0].properties.size !== "undefined" ) { clearInterval(wait); _renderMapDataLegend(graph.data, element, graph); } else if (!wait) { wait = setInterval(call, 500); } }; call(); } function diacritics(string) { var substitutions = [ [/[áà]/gi, "a"], [/[éè]/gi, "e"], [/[íì]/gi, "i"], [/[óò]/gi, "o"], [/[úù]/gi, "u"] ]; substitutions.forEach(function (sub) { string = string.replace(sub[0], sub[1]); }); return string; } function _renderMapDataLegend(data, element, graph) { // Selecciono los elementos var container = $(element); container.html(""); data = data.sort(function (a, b) { var textA = a.properties.nombre.toLowerCase(); var textB = b.properties.nombre.toLowerCase(); if (textA < textB) return -1; if (textA > textB) return 1; return 0; }); // Preparo un contenedor var wrapper = $(""); var search = $( "
    " ); var input = search.find("input"); var searchFunc = _.debounce(function (event) { var text = event.target.value; if (text.length) { text = diacritics(event.target.value); var regexp = new RegExp(".*" + text + ".*", "i"); var found = data.filter(function (entry) { regexp.lastIndex = 0; return regexp.test(diacritics(entry.properties.nombre)); }); draw(found); } else { draw(data); } }, 600); input.on("input", searchFunc); container.append(search); container.append(wrapper); // Extraigo datos de la gráfica var active = false; var keys = data.map(function (entry) { return entry.properties[graph.code]; }); function select(id) { keys.forEach(function (key) { return graph.logger.trigger("select", key, false); }); wrapper.find(".legend-entry").removeClass("selected"); if (active != id) { graph.logger.trigger("select", id, true); wrapper .find(".legend-entry[data-code='" + id + "']") .addClass("selected"); active = id; } else { active = false; } } graph.logger.subscribe("click", function (data) { //Evitar interferencias con la funcion de set normal wrapper.find(".legend-entry").removeClass("selected"); hasRemove = false; if (active == data[graph.code]) { hasRemove = true; } if (active != data[graph.code]) { active = data[graph.code]; var elem = wrapper.find(".legend-entry[data-code='" + active + "']"); if (elem.length) { wrapper.scrollTop(elem.position().top + wrapper.scrollTop()); elem.addClass("selected"); } } keys.forEach(function (key) { if (key != active) { graph.logger.trigger("select", key, false); } }); if (hasRemove) { active = false; } }); function filaClick(id) { return function () { select(id); }; } function draw(data) { wrapper.html(""); if (data) { /* var colors = graph.color.range(); var intervals = graph.color.quantiles(); */ var filter = []; for (let index = 0; index < data.length; index++) { var entry = data[index]; var code = entry.properties[graph.code]; if (filter.indexOf(code) < 0) { filter.push(code); /* var color = colors[index]; */ var name = entry.properties.nombre; var value = entry.properties.size; value = value !== undefined ? shortFormat(value) : ""; var fila = $( "
  • " ); fila.on("click", filaClick(code)); fila.append( $( "' + name + "" ) ); fila.append($("" + value + "")); wrapper.append(fila); } } } // Inserta leyenda } draw(data); }