{"version":3,"sources":["inicio.js","consultas.js","cuadro.js","menu.js","App.js","serviceWorker.js","index.js"],"names":["Inicio","Consultas","ReactGA","initialize","debug","pageview","window","location","pathname","search","urlBackEnd","aspectosJSON","setAspectosJSON","useState","aspectosOptions","setAspectosOptions","aspectosSelected","setAspectosSelected","variablesJSON","setVariablesJSON","variablesSelected","setVariablesSelected","variablesOptions","setVariablesOptions","tiposTerritoriosJSON","setTiposTerritoriosJSON","tiposTerritoriosSelected","setTiposTerritoriosSelected","tiposTerritoriosOptions","setTiposTerritoriosOptions","territoriosJSON","setTerritoriosJSON","territoriosSelected","setTerritoriosSelected","territoriosOptions","setTerritoriosOptions","clasesPeriodosJSON","setClasesPeriodosJSON","clasesPeriodosSelected","setClasesPeriodosSelected","clasesPeriodosOptions","setClasesPeriodosOptions","periodosJSON","setPeriodosJSON","periodosSelected","setPeriodosSelected","periodosOptions","setPeriodosOptions","error","setError","hechosJSON","setHechosJSON","cuentaHechosJSON","setCuentaHechosJSON","cuentaDatos","setCuentaDatos","actualizarHechos","setActualizarHechos","acotar","setAcotar","modalShow","setModalShow","handleJSON","url","setJSON","console","log","fetch","then","res","json","result","rellenarOptionsFromJSON","varJSON","estructura","setOptions","Aux","map","value","index","push","label","creaQuery","v","s","forEach","element","substring","MyVerticallyCenteredModal","props","React","createElement","Modal","Object","assign","size","aria-labelledby","centered","Header","closeButton","Title","id","Body","Footer","Button","onClick","onHide","useEffect","cad","Array","isArray","length","q","crearHechos","cadcuenta","query","creaInterrogacion","qaspecto","qnv","qtte","qte","qclase_periodo","qperiodo","join","Container","fluid","Row","className","Alert","variant","dismissible","onClose","Heading","href","Col","sm","ButtonGroup","aria-label","limpiaSeleccion","class","Card","border","Select","placeholder","isMulti","options","onChange","toLocaleString","objArray","array","JSON","parse","str","concat","keys","reduce","next","values","open","escape","DownloadJSON","doc","jsPDF","tableRows","row","rowData","codigo_territorio","nombre_territorio","nombre_variable","periodo","valor","unidad","tipo_territorio","aspecto","variable","relevancia","impacto","años","clase_periodo","text","autoTable","startY","save","generatePDF","DataTable","columns","name","selector","sortable","grow","data","pagination","striped","dense","paginationPerPage","noDataComponent","customStyles","TableHeader","style","fontSize","rows","headCells","show","Cuadro","Menu","Router","Navbar","fill","expand","sticky","Brand","target","src","height","alt","Toggle","aria-controls","Collapse","Nav","Link","NavDropdown","title","Item","Switch","Route","exact","path","component","CookieConsent","buttonText","cookieName","background","buttonStyle","color","expires","acceptOnScroll","App","Boolean","hostname","match","ReactDOM","render","StrictMode","document","getElementById","navigator","serviceWorker","ready","registration","unregister","catch","message"],"mappings":"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","file":"static/js/main.9c154972.chunk.js","sourcesContent":["import React from 'react'\n// import {\n// BrowserRouter as Router,\n// Switch,\n// Route,\n// // useParams,\n// } from \"react-router-dom\";\n// import { Navbar,Nav,NavDropdown,Form,FormControl,Button } from 'react-bootstrap'\nimport Container from 'react-bootstrap/Container'\nimport Row from 'react-bootstrap/Row'\nimport Button from 'react-bootstrap/Button'\nimport Card from 'react-bootstrap/Card'\nimport Accordion from 'react-bootstrap/Accordion'\nimport ReactGA from 'react-ga';\n\nconst Inicio = () => {\n\n const trackingId = \"UA-181325999-1\"\n\n ReactGA.initialize(trackingId, {debug: true,});\n ReactGA.pageview(window.location.pathname + window.location.search);\n // ReactGA.pageview(\"https://d2cr.uclm.es/\");\n\n return(\n
\n \n \n \n \n \n \n Novedades\n \n \n \n \n

A continuación puede consultar las últimas novedades y modificaciones realizadas en esta página web:

\n
    \n
  • [10/may/2021] Usando D2CR para analizar la evolución de la población municipal en los últimos 100 años en lanzadigital.com
  • \n
  • [10/may/2021] Presentación del proyecto D2CR en la revista semanal Ayer & Hoy
  • \n
  • [8/feb/2021] Publicada una noticia basada en datos socioeconómicos de D2CR en lanzadigital.com
  • \n
  • [28/ene/2021] Participación del Dr. Francisco Ruiz en el programa de TV local de Membrilla \"SOBRE LA MESA - EL RETO DEMOGRAFICO\"
  • \n
\n
\n
\n
\n \n \n \n Noticias Antiguas\n \n \n \n \n \n \n \n \n
\n
\n
\n \n\n

D2CR: Despoblación y Despoblamiento en la provincia de Ciudad Real

\n

El proyecto D2CR (Despoblamiento y Despoblación en los Municipios de la Provincia de Ciudad Real) busca ayudar a combatir de forma más eficaz el problema demográfico en la provincia de Ciudad Real. Se basa en una idea clave que, el premio Nobel de Economía Joseph Stiglitz, resumió de forma clara: “No se puede mejorar lo que no se puede medir”. En esta línea, en D2CR se desarrollan y ponen a disposición de la sociedad varias herramientas para conocer adecuadamente el problema, un paso necesario para adoptar decisiones más eficaces. En los resultados incluidos en esta web se refleja el trabajo conjunto de expertos en demografía y en informática, mostrando el potencial de crear sinergias entre estas disciplinas, a priori tan distantes. D2CR sirve para enfrentar mejor el problema demográfico evitando generalizaciones, por definición incorrectas, ya que la situación es bastante diferente en unos territorios y en otros, también dentro de la provincia de Ciudad Real. También facilita los indicadores clave para analizar la situación, es decir, nos dice qué medir y cómo medirlo.

\n

D2CR está financiado por la Diputación Provincial de Ciudad Real y es realizado por un equipo de profesores investigadores de la Universidad de Castilla-La Mancha, pertenecientes a los departamentos de Tecnologías y Sistemas de Información, y Geografía y Ordenación del Territorio. El proyecto es la continuación y ampliación de trabajos previos dedicados a estudiar el fenómeno de la despoblación en la provincia de Ciudad Real. Su objetivo principal es facilitar el estudio, análisis y toma de decisiones sobre el problema demográfico en la provincia de Ciudad Real. Para ello, en la web del proyecto (https://d2cr.uclm.es) se incluyen opciones que buscan facilitar a cualquier persona, sin conocimientos técnicos especiales, poder conocer en detalle la realidad poblacional de la provincia y sus municipios y zonas. Ciudadanos, medios de comunicación, investigadores del territorio y su población y situación socioeconómica, responsables de organizaciones sociales o autoridades locales y provinciales son los usuarios potenciales de los resultados del proyecto D2CR.

\n

Las principales herramientas y contenidos que se ofrecen en la web son los siguientes:

\n
    \n
  • Un informe escrito, actualizado periódicamente, complementado con colecciones de datos relevantes disponibles para facilitar su uso por personas no expertas en tecnología. Está accesible en el menú Informe. Este documento es la versión más condensada de la gran cantidad de datos obtenidos y estudiados.
  • \n
  • Un módulo de consultas, accesible en el menú Consultas, que permite buscar en el repositorio completo de datos (más de medio millón, resultado del procesamiento de casi 20 millones de registros originales), para seleccionar y extraer los datos concretos que el usuario desea, filtrando por territorios, periodos de tiempo y/o temática. Dichos datos contienen información para la provincia, sus 102 municipios y territorios intermedios (comarcas, partidos judiciales, grupos de acción local, etc). Este repositorio sigue la filosofía de ‘datos abiertos’, fundamental para hacer efectivo el principio de transparencia en el acceso de la ciudadanía a la información.
  • \n
  • Una colección de cuadros de mando para consultar y analizar los datos más relevantes de forma interactiva y muy visual (con tablas, gráficos y mapas). Está accesible en el menú Cuadros de Mando.
  • \n
\n {/*

Adicionalmente, en el menú ‘Datos, Territorios y Fuentes’ se explican las más de 200 variables diferentes incluidas, cada una de las cuales refiere a un tema concreto del que se tienen valores para los diversos territorios, como son la densidad de población, porcentaje de población con más de 64 años o tasa de desempleo. También se incluye la lista de territorios agrupados por tipos (municipios, comarcas, partidos judiciales, grupos de acción local, provincia, etc), y las fuentes de donde proceden los datos.

*/}\n

Adicionalmente, en el menú ‘Organización de la Información’ se explican las más de 200 variables diferentes incluidas, cada una de las cuales refiere a un tema concreto del que se tienen valores para los diversos territorios, como son la densidad de población, porcentaje de población con más de 64 años o tasa de desempleo. También se incluye la lista de territorios agrupados por tipos (municipios, comarcas, partidos judiciales, grupos de acción local, provincia, etc) y los periodos temporales manejados.

\n

Las fuentes utilizadas para obtener los datos se presentan en el menú ‘Fuentes’. Además de la lista de fuentes y organizaciones a las que pertenecen, también se puede encontrar la lista de fuentes utilizadas para cada aspecto y/o variable.

\n\n
\n\n
\n {/* \n \n \"Diputacion\n \"Universidad\n \n */}\n
\n ) \n}\n\nexport default Inicio;","import React, { useState, useEffect } from 'react'\n// import { ListGroup, ListGroupItem } from 'react-bootstrap'\nimport Container from 'react-bootstrap/Container'\nimport Row from 'react-bootstrap/Row'\nimport Col from 'react-bootstrap/Col'\nimport Button from 'react-bootstrap/Button'\nimport Alert from 'react-bootstrap/Alert'\nimport Card from 'react-bootstrap/Card'\n// import Glyphicon from 'react-bootstrap/Glyphicon'\n// import MultiSelect from 'react-multi-select-component'\nimport Select from 'react-select';\nimport DataTable from 'react-data-table-component';\nimport { ButtonGroup, Form } from 'react-bootstrap'\nimport Modal from 'react-bootstrap/Modal'\nimport ReactGA from 'react-ga';\nimport jsPDF from \"jspdf\";\nimport \"jspdf-autotable\";\n\n\nconst Consultas = () => {\n const trackingId = \"UA-181325999-1\"\n\n ReactGA.initialize(trackingId, {debug: true,});\n ReactGA.pageview(window.location.pathname + window.location.search);\n // ReactGA.pageview(\"https://d2cr.uclm.es/consultas\");\n\n\n const urlBackEnd = \"https://appv3-uclmsky-d2crback.azurewebsites.net/\"\n // const urlBackEnd = \"https://app-uclmsky-d2crback.azurewebsites.net/\"\n // const urlBackEnd = \"http://localhost:8080/\"\n // const urlBackEnd = \"http://127.0.0.1:5000/\"\n\n const [aspectosJSON, setAspectosJSON] = useState([]);\n const [aspectosOptions, setAspectosOptions] = useState([]);\n const [aspectosSelected, setAspectosSelected] = useState([]);\n\n const [variablesJSON, setVariablesJSON] = useState([]);\n const [variablesSelected, setVariablesSelected] = useState([]);\n const [variablesOptions, setVariablesOptions] = useState([]);\n\n const [tiposTerritoriosJSON, setTiposTerritoriosJSON] = useState([]);\n const [tiposTerritoriosSelected, setTiposTerritoriosSelected] = useState([]);\n const [tiposTerritoriosOptions, setTiposTerritoriosOptions] = useState([]);\n\n const [territoriosJSON, setTerritoriosJSON] = useState([]);\n const [territoriosSelected, setTerritoriosSelected] = useState([]);\n const [territoriosOptions, setTerritoriosOptions] = useState([]);\n\n const [clasesPeriodosJSON, setClasesPeriodosJSON] = useState([]);\n const [clasesPeriodosSelected, setClasesPeriodosSelected] = useState([]);\n const [clasesPeriodosOptions, setClasesPeriodosOptions] = useState([]);\n\n const [periodosJSON, setPeriodosJSON] = useState([]);\n const [periodosSelected, setPeriodosSelected] = useState([]);\n const [periodosOptions, setPeriodosOptions] = useState([]);\n\n const [error, setError] = useState(null);\n // const [isLoaded, setIsLoaded] = useState(false);\n\n const [hechosJSON, setHechosJSON] = useState([]);\n const [cuentaHechosJSON, setCuentaHechosJSON] = useState(0);\n const [cuentaDatos, setCuentaDatos] = useState(0);\n const [actualizarHechos, setActualizarHechos] = useState(false)\n\n const [acotar, setAcotar] = useState(false);\n const [modalShow, setModalShow] = useState(false);\n\n // Columnas de la tabla que se muestra en pantalla\n //////////////////////////////////////////////////\n\n const columns = [\n {\n name: 'Código territorio',\n selector: 'codigo_territorio',\n sortable: true,\n grow: -1,\n },\n {\n name: 'Nombre territorio',\n selector: 'nombre_territorio',\n sortable: true,\n grow: 2,\n },\n {\n name: 'Nombre variable',\n selector: 'nombre_variable',\n sortable: true,\n grow: 2,\n },\n {\n name: 'Periodo',\n selector: 'periodo',\n sortable: true,\n },\n {\n name: 'Valor',\n selector: 'valor',\n sortable: true,\n grow: -1,\n },\n {\n name: 'Unidad',\n selector: 'unidad',\n sortable: true,\n },\n {\n name: 'Tipo territorio',\n selector: 'tipo_territorio',\n sortable: true,\n },\n {\n name: 'Aspecto',\n selector: 'aspecto',\n sortable: true,\n },\n {\n name: 'Variable',\n selector: 'variable',\n sortable: true,\n },\n {\n name: 'Relevancia Variable',\n selector: 'relevancia',\n sortable: true,\n grow: -1,\n },\n {\n name: 'Impacto Variable',\n selector: 'impacto',\n sortable: true,\n grow: -1,\n },\n {\n name: 'Años Periodo',\n selector: 'años',\n sortable: true,\n grow: -1,\n },\n {\n name: 'Clase periodo',\n selector: 'clase_periodo',\n sortable: true,\n },\n ];\n\n const TableStyle = {\n TableHeader: {\n style: {\n fontSize: '50px'\n },\n },\n rows: {\n style: {\n fontSize: '12px'\n },\n },\n headCells: {\n style: {\n fontSize: '18px'\n }\n },\n }\n // Funciones auxiliares\n ///////////////////////\n\n const handleJSON = (url, setJSON) => {\n console.log(url)\n fetch(url)\n .then(res => res.json())\n .then(\n (result) => {\n // setIsLoaded(true);\n setJSON(result);\n },\n (error) => {\n // setIsLoaded(true);\n setError(\"error\");\n }\n )\n }\n\n const rellenarOptionsFromJSON = (varJSON, estructura, setOptions) => {\n const Aux = []\n varJSON.map((value, index) => {\n // Aux.push({label: value.aspecto, value: value.aspecto})\n Aux.push({label: value[estructura[0]], value: value[estructura[1]]})\n return true\n })\n setOptions(Aux)\n }\n\n const creaQuery = (v) => {\n // A partir de un vector de opciones seleccionadas genera una cadena para la query separada por \",\"\n let s = \"\"\n v.forEach(element => {\n s += \",\" + element[\"value\"];\n });\n s = s.substring(1); // quitamos la primera ','\n return s;\n }\n\n const crearHechos = () => {\n const creaInterrogacion = () => {\n let query = \"\"\n let qaspecto = \"\"\n \n let qnv = \"\"\n let qtte = \"\"\n let qte = \"\"\n let qclase_periodo = \"\"\n let qperiodo = \"\"\n let v = []\n\n if (Array.isArray(variablesSelected) && variablesSelected.length > 0) {\n // qnv = \"nv=\" + variablesSelected[0][\"value\"]\n qnv = \"nv=\" + creaQuery(variablesSelected)\n v.push(qnv)\n }\n if (Array.isArray(aspectosSelected) && aspectosSelected.length > 0) {\n // qaspecto = \"aspecto=\" + aspectosSelected[0][\"value\"]\n if (qnv === \"\"){\n qaspecto = \"aspecto=\" + creaQuery(aspectosSelected)\n v.push(qaspecto)\n }\n }\n if (Array.isArray(territoriosSelected) && territoriosSelected.length > 0) {\n // qte = \"id_te=\" + TerritoriosSelected[0][\"value\"]\n qte = \"id_te=\" + creaQuery(territoriosSelected)\n v.push(qte)\n }\n if (Array.isArray(tiposTerritoriosSelected) && tiposTerritoriosSelected.length > 0) {\n // qtte = \"tipo_te=\" + tiposTerritoriosSelected[0][\"value\"]\n if (qte === \"\") {\n qtte = \"tipo_te=\" + creaQuery(tiposTerritoriosSelected)\n v.push(qtte)\n }\n }\n if (Array.isArray(periodosSelected) && periodosSelected.length > 0) {\n // qperiodo = \"periodo=\" + PeriodosSelected[0][\"value\"]\n qperiodo = \"periodo=\" + creaQuery(periodosSelected)\n v.push(qperiodo)\n }\n if (Array.isArray(clasesPeriodosSelected) && clasesPeriodosSelected.length > 0) {\n // qclase_periodo = \"clase_per=\" + ClasesPeriodosSelected[0][\"value\"]\n if (qperiodo === \"\") {\n qclase_periodo = \"clase_per=\" + creaQuery(clasesPeriodosSelected)\n v.push(qclase_periodo)\n }\n }\n query = v.join(\"&\")\n return query\n }\n\n let cad = urlBackEnd + \"hechos/\"\n let cadcuenta = urlBackEnd + \"counthechos/\"\n let query = creaInterrogacion()\n if (query !==\"\") {\n cad += \"?\"+query\n cadcuenta += \"?\"+query\n }\n handleJSON(cad, setHechosJSON)\n handleJSON(cadcuenta, setCuentaHechosJSON)\n }\n\n const limpiaSeleccion = () => {\n setAspectosSelected([])\n setVariablesSelected([])\n setTiposTerritoriosSelected([])\n setTerritoriosSelected([])\n setClasesPeriodosSelected([])\n setPeriodosSelected([])\n\n setActualizarHechos(true)\n }\n\n const DownloadJSON = (objArray) => {\n const array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;\n let str = `${Object.keys(array[0]).map(value => `\"${value}\"`).join(\",\")}` + '\\r\\n';\n\n let result = array.reduce((str, next) => {\n str += `${Object.values(next).map(value => `\"${value}\"`).join(\",\")}` + '\\r\\n';\n return str;\n }, str);\n window.open( \"data:text/csv;charset=utf-8,\" + escape(result))\n }\n\n const generatePDF = (objArray) => {\n // initialize jsPDF\n const doc = new jsPDF('lanscape');\n \n const array = typeof objArray !== 'object' ? JSON.parse(objArray) : objArray;\n // define the columns we want and their titles\n const tableColumn = ['Codigo Territorio', 'Nombre Territorio', 'Nombre Variable', 'Periodo', 'Valor', 'Unidad', 'Tipo Territorio', 'Aspecto', 'Variable', 'Relevancia', 'Impacto', 'Años', 'Clase Periodo'] ;\n // define an empty array of rows\n const tableRows = [];\n // console.log(tableColumn.join(\";\"))\n // for each row pass all its data into an array\n array.forEach(row => {\n // console.log(row);\n const rowData = [\n row.codigo_territorio,\n row.nombre_territorio,\n row.nombre_variable,\n row.periodo,\n row.valor,\n row.unidad,\n row.tipo_territorio,\n row.aspecto,\n row.variable,\n row.relevancia,\n row.impacto,\n row.años,\n row.clase_periodo\n ];\n // push each rowData\n tableRows.push(rowData);\n // console.log(rowData.join(\";\"));\n });\n \n \n // startY is basically margin-top\n doc.text(\"D2CR - https://d2cr.uclm.es/\", 14, 15);\n doc.autoTable(tableColumn, tableRows, { startY: 20 });\n // const date = Date().split(\" \");\n // we use a date string to generate our filename.\n // const dateStr = date[0] + date[1] + date[2] + date[3] + date[4];\n // ticket title. and margin-top + margin-left\n // doc.text(\"Closed tickets within the last one month.\", 14, 15);\n // we define the name of our PDF file.\n doc.save(`datosD2CR.pdf`);\n };\n \n\n function MyVerticallyCenteredModal(props) {\n return (\n \n \n \n Ayuda acerca de las consultas D2CR\n \n \n \n

\n Para poder realizar una consulta lo primero es realizar un filtrado en la parte izquierda de la pantalla, donde se muestran tres filtros:\n

\n

\n
\n

\n En una consulta puede utilizarse cualquier combinación de los tres filtros anteriores. Los datos resultantes serán aquellos que cumplen a la vez los filtros activados. Si no se especifica un filtro en alguna de las dimensiones, esa dimensión lo limitará los resultados. Por ejemplo, el filtro temporal vacío significa que se obtendrán datos de todos los periodos temporales disponibles.\n

\n

\n Tras realizar la selección de los filtros deseados se debe pulsar en el botón Actualizar datos para que los datos mostrados reflejen la aplicación de los filtros. Es interesante ver cuántos registros de resultados se han obtenido.\n

\n

\n Por último, si los datos son de interés, se pueden descargar en formato abierto CSV (que se puede abrir después con programas como Excel) o en PDF. Una descarga no permite más de 20 mil registros a la vez.\n

\n
\n \n \n \n \n );\n }\n\n\n // Carga de datos inicial\n /////////////////////////\n\n useEffect(() => {\n handleJSON(urlBackEnd + \"aspectos/\", setAspectosJSON)\n // handleJSON(urlBackEnd + \"variables/\", setVariablesJSON)\n handleJSON(urlBackEnd + \"tiposterritorios/\", setTiposTerritoriosJSON)\n // handleJSON(urlBackEnd + \"territorios/\", setTerritoriosJSON)\n handleJSON(urlBackEnd + \"clasesperiodos/\", setClasesPeriodosJSON)\n // handleJSON(urlBackEnd + \"periodos/\", setPeriodosJSON)\n handleJSON(urlBackEnd + \"hechos/\", setHechosJSON)\n handleJSON(urlBackEnd + \"counthechos/\", setCuentaHechosJSON)\n },[])\n\n\n // Rellenar las opciones de los dropdown cuando cambian los JSON\n ////////////////////////////////////////////////////////////////\n useEffect(() => {\n rellenarOptionsFromJSON(aspectosJSON, ['aspecto', 'aspecto'], setAspectosOptions)\n }, [aspectosJSON])\n\n useEffect(() => {\n rellenarOptionsFromJSON(variablesJSON, ['nombre', 'nv'], setVariablesOptions)\n }, [variablesJSON])\n\n useEffect(() => {\n rellenarOptionsFromJSON(tiposTerritoriosJSON, ['tipo_territorio', 'tipo'], setTiposTerritoriosOptions)\n }, [tiposTerritoriosJSON])\n\n useEffect(() => {\n rellenarOptionsFromJSON(territoriosJSON, ['nombre', 'id_te'], setTerritoriosOptions)\n }, [territoriosJSON])\n\n useEffect(() => {\n rellenarOptionsFromJSON(clasesPeriodosJSON, ['clase', 'clase'], setClasesPeriodosOptions)\n }, [clasesPeriodosJSON])\n\n useEffect(() => {\n rellenarOptionsFromJSON(periodosJSON, ['periodo', 'periodo'], setPeriodosOptions)\n }, [periodosJSON])\n\n // Efectos de unos dropdowns a otros\n ////////////////////////////////////\n\n useEffect(() => {\n let cad = \"\"\n if (!Array.isArray(aspectosSelected)|| !aspectosSelected.length) {\n cad = urlBackEnd + 'variables/'\n } else { // if (aspectosSelected.length >0)\n // cad = urlBackEnd + 'variables/' + aspectosSelected[0][\"value\"]\n let q = creaQuery(aspectosSelected)\n cad = urlBackEnd + 'variables/' + q\n }\n handleJSON(cad, setVariablesJSON)\n setVariablesSelected([])\n \n // setActualizarHechos(true)\n }, [aspectosSelected]);\n\n useEffect(() => {\n let cad = \"\"\n if (!Array.isArray(tiposTerritoriosSelected)|| !tiposTerritoriosSelected.length) {\n cad = urlBackEnd + 'territorios/'\n } else { // if (tiposTerritoriosSelected.length >0)\n // cad = urlBackEnd + 'territorios/' + tiposTerritoriosSelected[0][\"value\"]\n let q = creaQuery(tiposTerritoriosSelected)\n cad = urlBackEnd + 'territorios/' + q\n }\n handleJSON(cad, setTerritoriosJSON)\n setTerritoriosSelected([])\n\n // setActualizarHechos(true)\n }, [tiposTerritoriosSelected]);\n\n useEffect(() => {\n let cad = \"\"\n if (!Array.isArray(clasesPeriodosSelected)|| !clasesPeriodosSelected.length) {\n cad = urlBackEnd + 'periodos/'\n } else { // if (tiposTerritoriosSelected.length >0)\n // cad = urlBackEnd + 'periodos/' + ClasesPeriodosSelected[0][\"value\"]\n let q = creaQuery(clasesPeriodosSelected)\n cad = urlBackEnd + 'periodos/' + q\n }\n handleJSON(cad, setPeriodosJSON)\n setPeriodosSelected([])\n\n // setActualizarHechos(true)\n }, [clasesPeriodosSelected]);\n\n\n // Rellenar la tabla de Hechos cuando cambian los elementos seleccionados en los dropdowns\n //////////////////////////////////////////////////////////////////////////////////////////\n // useEffect(() => {\n // setActualizarHechos(true)\n // },[aspectosSelected, variablesSelected, tiposTerritoriosSelected, territoriosSelected, clasesPeriodosSelected, periodosSelected])\n\n // useEffect(() => {\n // setActualizarHechos(true)\n // },[variablesSelected])\n\n // useEffect(() => {\n // setActualizarHechos(true)\n // },[territoriosSelected])\n\n // useEffect(() => {\n // setActualizarHechos(true)\n // },[periodosSelected])\n\n // useEffect(() => {\n // setCuentaHechosJSON(hechosJSON.length)\n // },[hechosJSON])\n\n useEffect(() => {\n\n\n if (actualizarHechos) {\n setActualizarHechos(false)\n crearHechos()\n }\n },[actualizarHechos])\n\n useEffect(() => {\n if (cuentaHechosJSON.length>0){\n setCuentaDatos(cuentaHechosJSON[0][\"cuenta\"])\n }\n else{\n setCuentaDatos(0)\n }\n }, [cuentaHechosJSON])\n \n const mostrarAcotar = () => {\n setAcotar(!acotar)\n }\n\n return (\n
\n \n \n {(error) &&\n setError(null)}>\n Se ha producido el error: {error}. Por favor, intentelo dentro unos minutos.\n

Si el problema persiste, por favor, notifiquelo a proyecto.d2cr@uclm.es

\n
\n }\n
\n\n \n\n \n \n \n \n Limpiar filtros .\n \n \n \n \n setActualizarHechos(true)}\n >\n Actualizar Datos . \n \n \n \n \n\n
\n \n Filtro Temático\n \n

Aspectos

\n \n
\n

Variables

\n \n
\n
\n
\n \n Filtro Territorial\n \n {/* */}\n {/* {acotar && */}\n {/* <>\n

Tipos de Territorio Agregado

\n \n */}\n {/* } */}\n

Tipos de Territorio

\n \n
\n

Territorios

\n \n
\n
\n
\n \n Filtro Temporal\n \n

Clases de periodos

\n \n
\n

Periodos

\n \n
\n
\n
\n \n\n \n \n

Total Datos Seleccionados: {cuentaDatos.toLocaleString('es-ES')}

\n
\n \n \n DownloadJSON(hechosJSON)}\n >\n Descargar Selección en CSV .\n \n \n \n \n generatePDF(hechosJSON)}\n >\n Descargar Selección en PDF .\n \n \n \n \n setModalShow(true)}\n >\n Ayuda .\n \n \n \n \n {/*

Total registros: {(cuentaHechosJSON.length>0) && cuentaHechosJSON[0][\"cuenta\"]}

*/}\n {/*

Total registros: {cuentaHechosJSON}

*/}\n {/*

Total registros: {cuentaDatos}

*/}\n \n \n
\n setModalShow(false)}\n />\n
\n
\n )\n}\n\nexport default Consultas;\n","import React from 'react'\n// import {\n// BrowserRouter as Router,\n// Switch,\n// Route,\n// // useParams,\n// } from \"react-router-dom\";\n// import { Navbar,Nav,NavDropdown,Form,FormControl,Button } from 'react-bootstrap'\nimport Container from 'react-bootstrap/Container'\nimport Row from 'react-bootstrap/Row'\n\nconst Cuadro = () => {\n return(\n
\n \n \n

Cuadros de Mando de Despoblación y Despoblamiento en la provincia de Ciudad Real

\n

En Construcción

\n
\n \n

El cuadro de mando no está disponible todavía

\n
\n\n
\n \n \n \"Diputacion\n \"Universidad\n \n \n
\n ) \n}\n\nexport default Cuadro;","import React from 'react'\nimport {\n BrowserRouter as Router,\n Switch,\n Route,\n // useParams,\n } from \"react-router-dom\";\n// import { Navbar,Nav,NavDropdown,Form,FormControl,Button } from 'react-bootstrap'\nimport { \n Navbar, \n Nav, \n NavDropdown\n} from 'react-bootstrap'\nimport Inicio from './inicio.js';\nimport Consultas from './consultas.js';\nimport Cuadros from './cuadros.js'\nimport Informes from './informes.js';\nimport Contacto from './contacto.js';\nimport Organizacion from './organizacion.js';\nimport Fuentes from './fuentes.js';\nimport Cuadro from './cuadro.js'\nimport CookieConsent from \"react-cookie-consent\"\n// import ReactGA from 'react-ga';\n\n// const trackingId = \"G-8S1T5XGFD5\"\n\nconst Menu = () => {\n\n// ReactGA.initialize(trackingId);\n// ReactGA.pageview(window.location.pathname + window.location.search);\n return(\n
\n
\n
\n \n {/* */}\n \n \n \"Diputacion\n \n {/* */}\n \n \"Inicio\n \n \n \n \n {/*
\n \n \n */}\n
\n \n \"Universidad\n \n
\n
\n \n {/* \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n */}\n { window.location = 'https://alarcos.esi.uclm.es/d2cr/'; return null;} }/> \n { window.location = 'https://alarcos.esi.uclm.es/d2cr/informe/'; return null;} }/> \n \n \n \n { window.location = 'https://alarcos.esi.uclm.es/d2cr/cuadros/'; return null;} }/> \n { window.location = 'https://alarcos.esi.uclm.es/d2cr/organizacion/'; return null;} }/>\n { window.location = 'https://alarcos.esi.uclm.es/d2cr/fuentes/'; return null;} }/>\n { window.location = 'https://alarcos.esi.uclm.es/d2cr/contacto/'; return null;} }/>\n \n
\n
\n
\n \n Esta web utiliza cookies propias y de terceros para mejorar la experiencia de usuario. Aviso Legal\n \n
\n ) \n}\n\nexport default Menu;","import React from 'react';\n// import logo from './logo.svg';\nimport './App.css';\n\n// import {\n// BrowserRouter as Router,\n// Switch,\n// Route,\n// // useParams,\n// } from \"react-router-dom\";\n// import { Navbar,Nav,NavDropdown,Form,FormControl,Button } from 'react-bootstrap'\nimport Menu from './menu.js'\nimport ReactGA from 'react-ga';\n\nfunction App() {\n // const trackingId = \"G-8S1T5XGFD5\"\n const trackingId = \"UA-181325999-1\"\n\n ReactGA.initialize(trackingId, {debug: true,});\n ReactGA.pageview(window.location.pathname + window.location.search);\n // ReactGA.pageview(\"https://d2cr.uclm.es/\");\n\n return (\n
\n {/*
\n \"logo\"\n

\n Edit src/App.js and save to reload.\n

\n \n Learn React\n \n
*/}\n \n
\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}