2024-08-17 19:05:28 +00:00
<!DOCTYPE html>
2024-09-05 22:33:55 +00:00
< html data-theme = "light" lang = "es" style = "background-color: rgb(205, 243, 148); color: black;" >
2024-08-17 19:05:28 +00:00
< head >
2025-03-07 21:55:11 +00:00
<!-- BASE ! -->
2024-08-18 00:38:09 +00:00
< meta charset = "UTF-8" >
2024-09-05 21:02:43 +00:00
< meta name = "viewport" content = "width=device-width, initial-scale=1" >
2024-09-06 04:37:41 +00:00
< title > Bachemapa - Mapa interactivo de baches y otras cosas< / title >
2025-03-08 21:29:24 +00:00
<!-- <link rel="stylesheet" href="{{ url_for('static', filename='pico.amber.css') }}"> -->
< link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css" >
2024-08-18 00:38:09 +00:00
< link rel = "stylesheet" href = "https://unpkg.com/leaflet@1.9.4/dist/leaflet.css"
integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY="
crossorigin=""/>
2025-03-24 18:02:15 +00:00
<!-- <script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.src.js"
integrity="sha256-47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU="
crossorigin="">< / script > -->
2024-08-18 00:38:09 +00:00
< script src = "https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"
integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo="
crossorigin="">< / script >
2024-09-05 03:22:51 +00:00
< link rel = "stylesheet" href = "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css" >
2025-04-14 23:24:31 +00:00
< link rel = "icon" href = "{{ url_for('static', filename='images/favico.ico') }}" type = "image/x-icon" >
< link rel = "shortcut icon" href = "{{ url_for('static', filename='images/favico.ico') }}" type = "image/x-icon" >
<!-- <script src="https://app.unpkg.com/leaflet.markercluster@1.4.1/files/dist/leaflet.markercluster.js" type="text/javascript"></script> -->
< script type = "application/importmap" src = "https://app.unpkg.com/leaflet.markercluster@1.4.1/files/dist/leaflet.markercluster-src.js.map" > < / script >
< link href = "https://app.unpkg.com/leaflet.markercluster@1.4.1/files/dist/MarkerCluster.css" >
< link href = "https://app.unpkg.com/leaflet.markercluster@1.4.1/files/dist/MarkerCluster.Default.css" >
2024-09-05 21:02:43 +00:00
< script src = "{{ url_for('static', filename='leaflet.markercluster.js')}}" > < / script >
2025-04-14 23:24:31 +00:00
< link rel = "stylesheet" href = "{{ url_for('static', filename='styles.css') }}" >
2025-03-24 18:02:15 +00:00
<!-- <script src="{{ url_for('static', filename='src/MarkerClusterGroup.js')}}"></script> -->
<!-- <script type="importmap" src="{{ url_for('static', filename='leaflet.markercluster.js.map')}}"></script>
2024-09-05 21:02:43 +00:00
< link href = "{{ url_for('static', filename='MarkerCluster.css')}}" >
2025-03-24 18:02:15 +00:00
< link href = "{{ url_for('static', filename='MarkerCluster.Default.css')}}" > -->
2025-03-14 06:48:49 +00:00
< link rel = "manifest" href = "{{ url_for('static', filename='manifest.json') }}" >
2024-08-17 19:05:28 +00:00
2025-03-16 01:11:32 +00:00
<!-- Primary Meta Tags -->
< meta name = "description" content = "Bachemapa: plataforma colaborativa para documentar y visualizar el estado de la infraestructura urbana en Querétaro, México. Información actualizada sobre mantenimiento vial e infraestructura pública." >
< meta name = "keywords" content = "Querétaro, infraestructura urbana, mantenimiento vial, desarrollo urbano, mapeo colaborativo, documentación urbana, participación ciudadana, urbanización, planificación urbana, vialidades, reporte de baches" >
<!-- Schema.org markup for Google -->
< script type = "application/ld+json" >
{
"@context": "https://schema.org",
"@type": "WebApplication",
"name": "Bachemapa",
"description": "Plataforma para documentar y visualizar el estado de la infraestructura urbana en Querétaro",
"url": "https://baches.qro.mx",
"applicationCategory": "MapApplication",
"operatingSystem": "All",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "MXN"
}
}
< / script >
<!-- Robots meta tag -->
< meta name = "robots" content = "index, follow" >
<!-- Language and geo tags -->
< meta name = "language" content = "es" >
< meta name = "geo.region" content = "MX-QUE" >
< meta name = "geo.placename" content = "Querétaro" >
2024-09-06 04:37:41 +00:00
<!-- Autor de la página -->
< meta name = "author" content = "Kernel Panic Room" >
<!-- Meta etiquetas para redes sociales -->
< meta property = "og:title" content = "Bachemapa - Mapa interactivo de baches y otras cosas" >
< meta property = "og:description" content = "Bachemapa es una plataforma dedicada a documentar y reportar problemas con el desarrollo urbano en Querétaro, México. Encuentra y aporta información actualizada sobre baches, deficiencias en infraestructura y más." >
<!-- <meta property="og:image" content="URL_DE_LA_IMAGEN_DE_PREVISUALIZACIÓN"> -->
< meta property = "og:url" content = "https://baches.qro.mx" >
< meta property = "og:type" content = "website" >
< meta name = "twitter:title" content = "Bachemapa - Documentación de Problemas Urbanos en Querétaro" >
< meta name = "twitter:description" content = "Bachemapa es una plataforma dedicada a documentar y reportar problemas con el desarrollo urbano en Querétaro, México. Encuentra información actualizada sobre baches, deficiencias en infraestructura y más." >
< meta name = "twitter:site" content = "@botkernel" >
<!-- Otros meta tags -->
< link rel = "canonical" href = "https://baches.qro.mx" >
2025-03-14 06:48:49 +00:00
{% block head %}
{% endblock %}
2024-09-06 04:37:41 +00:00
<!-- Versión pública 0.1 -->
2024-08-17 19:05:28 +00:00
< / head >
2024-09-05 22:04:32 +00:00
< body class = "" style = "color: black;" >
2025-03-08 21:29:24 +00:00
{% include 'nav.html' %}
2024-08-21 19:38:01 +00:00
{% with messages = get_flashed_messages() %}
{% if messages %}
2024-08-31 23:50:22 +00:00
2024-09-06 23:24:22 +00:00
< div class = "flashes" >
2024-08-21 19:38:01 +00:00
{% for message in messages %}
2024-09-06 23:24:22 +00:00
< h3 > {{message}}< / h3 >
2024-08-21 19:38:01 +00:00
{% endfor %}
2024-09-06 23:24:22 +00:00
< / div >
2024-08-21 19:38:01 +00:00
{% endif %}
{% endwith %}
2025-04-14 20:05:13 +00:00
< main class = "container-fluid" >
2024-08-21 19:38:01 +00:00
2025-03-08 21:29:24 +00:00
{% block content %}
2024-08-17 19:05:28 +00:00
2025-03-08 21:29:24 +00:00
{% endblock %}
< section id = "pinner-modal" style = "" hidden = "true" >
{% if current_user.is_authenticated %}
{% include 'add_pin.html' %}
< / section >
{% else %}
< div class = "flashes" >
2025-04-14 23:24:31 +00:00
< h3 > Seguramente quieres < a href = "{{ url_for('thelogin') }}" > iniciar sesión< / a > < / h3 >
2025-03-08 21:29:24 +00:00
< / div >
< / section >
{% endif %}
2025-03-07 21:55:11 +00:00
2025-03-08 21:29:24 +00:00
< / main >
2024-08-18 00:38:09 +00:00
< / body >
2024-08-21 19:38:01 +00:00
< script >
const observer = new MutationObserver((mutations) => {
const element = document.getElementById('pinner-pop');
if (element) {
element.addEventListener('click', toggleSlide);
}
})
const pinner_button_top = document.getElementById("pinner-top");
const modal_stat = document.getElementById("pinner-modal");
function toggleSlide() {
if (modal_stat.hidden === true) {
modal_stat.hidden = false;
} else {modal_stat.hidden = true;}
}
2025-04-14 21:08:35 +00:00
if (pinner_button_top) {
pinner_button_top.addEventListener('click', toggleSlide);
}
2024-09-05 05:15:16 +00:00
const cancel_add = document.getElementById("cancel-add");
2025-04-14 23:24:31 +00:00
if (cancel_add) {
cancel_add.addEventListener('click', toggleSlide);
}
2024-08-21 19:38:01 +00:00
observer.observe(document.body, { childList: true, subtree: true });
< / script >
2024-09-03 20:22:02 +00:00
< script >
// Wait until the entire page is fully loaded
window.addEventListener('load', function() {
const link = document.querySelector("link[rel='stylesheet'][href='{{ url_for('static', filename='styles.css') }}']");
if (link) {
const newLink = link.cloneNode();
link.remove();
document.head.appendChild(newLink);
}
});
< / script >
2025-03-08 21:29:24 +00:00
< script >
document.addEventListener('DOMContentLoaded', function() {
const pinnerDesktop = document.getElementById("pinner-top-desktop");
if (pinnerDesktop) {
pinnerDesktop.addEventListener('click', toggleSlide);
}
});
2025-03-14 06:48:49 +00:00
< / script >
< script >
if ('serviceWorker' in navigator) {
window.addEventListener('load', function() {
navigator.serviceWorker.register('/static/service-worker.js')
.then(function(registration) {
console.log('Service Worker registered with scope:', registration.scope);
}, function(err) {
console.log('Service Worker registration failed:', err);
});
});
}
2025-03-08 21:29:24 +00:00
< / script >
2024-08-18 00:38:09 +00:00
< / html >