{"id":3470,"date":"2025-03-24T15:38:54","date_gmt":"2025-03-24T20:38:54","guid":{"rendered":"https:\/\/dumpflashedit.com\/?page_id=3470"},"modified":"2026-03-23T19:28:52","modified_gmt":"2026-03-24T00:28:52","slug":"servicios","status":"publish","type":"page","link":"https:\/\/dumpflashedit.com\/index.php\/servicios\/","title":{"rendered":"servicios"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"3470\" class=\"elementor elementor-3470\">\n\t\t\t\t<div class=\"elementor-element elementor-element-397d135 e-flex e-con-boxed e-con e-parent\" data-id=\"397d135\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b3cbf49 elementor-widget elementor-widget-html\" data-id=\"b3cbf49\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\r\n\r\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.datatables.net\/1.13.4\/css\/jquery.dataTables.min.css\">\r\n<script src=\"https:\/\/code.jquery.com\/jquery-3.6.0.min.js\"><\/script>\r\n<script src=\"https:\/\/cdn.datatables.net\/1.13.4\/js\/jquery.dataTables.min.js\"><\/script>\r\n\r\n<style>\r\nbody {\r\n    background: #f5f5f5;\r\n    padding: 20px;\r\n    font-family: 'Segoe UI', sans-serif;\r\n}\r\n.container {\r\n    max-width: 1200px;\r\n    margin: auto;\r\n    background: white;\r\n    padding: 20px;\r\n    border-radius: 8px;\r\n}\r\n.filters {\r\n    display: flex;\r\n    gap: 15px;\r\n    margin-bottom: 20px;\r\n}\r\nselect, input {\r\n    padding: 8px 12px;\r\n    border: 1px solid #ddd;\r\n    border-radius: 4px;\r\n    min-width: 200px;\r\n}\r\n<\/style>\r\n<\/head>\r\n\r\n<body>\r\n\r\n<div class=\"container\">\r\n\r\n    <div class=\"filters\">\r\n\r\n        <!-- \ud83d\udd25 SELECT DATASET -->\r\n        <select id=\"tipo-data\">\r\n            <option value=\"dash\">DASH<\/option>\r\n            <option value=\"inmo\">INMO<\/option>\r\n            <option value=\"pincode\">PINCODE<\/option>\r\n            <option value=\"airbag\">AIRBAG<\/option>\r\n        <\/select>\r\n\r\n        <!-- \ud83d\udd25 SELECT CATEGORIA -->\r\n        <select id=\"marca\">\r\n            <option value=\"\" selected disabled hidden>Categor\u00eda<\/option>\r\n        <\/select>\r\n\r\n        <button id=\"reset-filters\">Mostrar todos<\/button>\r\n\r\n    <\/div>\r\n\r\n    <input id=\"search-input\" type=\"text\" placeholder=\"Buscar modelo...\" style=\"width:100%; margin-bottom:20px;\">\r\n\r\n    <table id=\"models-table\" class=\"display\" style=\"width:100%;\">\r\n        <thead>\r\n            <tr>\r\n                <th>N\u00b0<\/th>\r\n                <th>MODELO<\/th>\r\n                <th>SUBMODELO<\/th>\r\n                <th>MARCA<\/th>\r\n                <th>CATEGOR\u00cdA<\/th>\r\n            <\/tr>\r\n        <\/thead>\r\n        <tbody><\/tbody>\r\n    <\/table>\r\n\r\n<\/div>\r\n\r\n<script>\r\n\r\n\/\/ ================= DATASETS =================\r\nconst DATASETS = {\r\n    dash: \"https:\/\/dumpflashedit.com\/cal-data\/modelos.json\",\r\n    inmo: \"https:\/\/dumpflashedit.com\/cal-data\/immo-data\/modelos.json\",\r\n    pincode: \"https:\/\/dumpflashedit.com\/cal-data\/pincode\/modelos.json\",\r\n    airbag: \"https:\/\/dumpflashedit.com\/cal-data\/airbag\/modelos.json\"\r\n};\r\n\r\nlet table;\r\nlet allModels = [];\r\nlet datos = {};\r\n\r\n\/\/ ================= NORMALIZAR =================\r\nfunction normalizarTexto(t) {\r\n    return t.toLowerCase().normalize(\"NFD\").replace(\/[\\u0300-\\u036f]\/g, \"\");\r\n}\r\n\r\n\/\/ ================= CARGAR DATASET =================\r\nasync function cargarDataset(tipo) {\r\n\r\n    try {\r\n        const res = await fetch(DATASETS[tipo] + \"?v=\" + Date.now());\r\n        datos = await res.json();\r\n\r\n        allModels = extractAllModels();\r\n        recargarTabla();\r\n\r\n    } catch (e) {\r\n        console.error(\"Error cargando dataset:\", e);\r\n    }\r\n}\r\n\r\n\/\/ ================= EXTRAER =================\r\nfunction extractAllModels() {\r\n\r\n    const result = [];\r\n\r\n    for (const [categoria, marcas] of Object.entries(datos)) {\r\n        for (const [marca, submodelos] of Object.entries(marcas)) {\r\n\r\n            submodelos.forEach(submodelo => {\r\n\r\n                const i = submodelo.lastIndexOf(\"_\");\r\n                const modelo = i !== -1 ? submodelo.substring(0, i) : submodelo;\r\n\r\n                result.push({\r\n                    categoria: categoria.replace(\/!\/g, \"\"),\r\n                    categoriaOriginal: categoria,\r\n                    marca,\r\n                    modelo,\r\n                    submodelo\r\n                });\r\n            });\r\n        }\r\n    }\r\n\r\n    return result;\r\n}\r\n\r\n\/\/ ================= LLENAR SELECT =================\r\nfunction llenarSelectMarca() {\r\n\r\n    const select = document.getElementById(\"marca\");\r\n    if (!select) return;\r\n\r\n    select.innerHTML = `<option value=\"\" selected disabled hidden>Categor\u00eda<\/option>`;\r\n\r\n    Object.keys(datos).forEach(cat => {\r\n\r\n        const op = document.createElement(\"option\");\r\n        op.value = cat;\r\n        op.textContent = cat.replace(\/!\/g, \"\");\r\n\r\n        select.appendChild(op);\r\n    });\r\n}\r\n\r\n\/\/ ================= RECARGAR TABLA =================\r\nfunction recargarTabla() {\r\n\r\n    if (!table) return;\r\n\r\n    table.clear();\r\n\r\n    allModels.forEach((item, idx) => {\r\n        table.row.add([\r\n            idx + 1,\r\n            item.modelo,\r\n            item.submodelo,\r\n            item.marca,\r\n            item.categoria\r\n        ]);\r\n    });\r\n\r\n    table.draw();\r\n    llenarSelectMarca();\r\n}\r\n\r\n\/\/ ================= FILTRAR =================\r\nfunction filtrar() {\r\n\r\n    const categoria = document.getElementById(\"marca\").value;\r\n    const texto = normalizarTexto(document.getElementById(\"search-input\").value);\r\n\r\n    table.clear();\r\n\r\n    const filtrados = allModels.filter(item => {\r\n\r\n        let matchCategoria = true;\r\n\r\n        if (categoria) {\r\n            matchCategoria = item.categoriaOriginal === categoria;\r\n        }\r\n\r\n        const matchText =\r\n            normalizarTexto(item.modelo).includes(texto) ||\r\n            normalizarTexto(item.submodelo).includes(texto) ||\r\n            normalizarTexto(item.marca).includes(texto) ||\r\n            normalizarTexto(item.categoria).includes(texto);\r\n\r\n        return matchCategoria && matchText;\r\n    });\r\n\r\n    filtrados.forEach((item, idx) => {\r\n        table.row.add([\r\n            idx + 1,\r\n            item.modelo,\r\n            item.submodelo,\r\n            item.marca,\r\n            item.categoria\r\n        ]);\r\n    });\r\n\r\n    table.draw();\r\n}\r\n\r\n\/\/ ================= INIT =================\r\nasync function init() {\r\n\r\n    \/\/ \ud83d\udd25 crear tabla primero\r\n    table = $('#models-table').DataTable({\r\n        pageLength: 10,\r\n        searching: false,\r\n        language: {\r\n            url: \"https:\/\/cdn.datatables.net\/plug-ins\/1.13.4\/i18n\/es-ES.json\"\r\n        }\r\n    });\r\n\r\n    \/\/ \ud83d\udd25 cargar dataset inicial\r\n    await cargarDataset(\"dash\");\r\n\r\n    \/\/ cambio dataset\r\n    document.getElementById(\"tipo-data\").addEventListener(\"change\", function(){\r\n        cargarDataset(this.value);\r\n    });\r\n\r\n    \/\/ filtros\r\n    document.getElementById(\"marca\").addEventListener(\"change\", filtrar);\r\n    document.getElementById(\"search-input\").addEventListener(\"input\", filtrar);\r\n\r\n    \/\/ reset\r\n    document.getElementById(\"reset-filters\").addEventListener(\"click\", () => {\r\n        document.getElementById(\"marca\").value = \"\";\r\n        document.getElementById(\"search-input\").value = \"\";\r\n        filtrar();\r\n    });\r\n}\r\n\r\n\/\/ ================= START =================\r\ndocument.addEventListener(\"DOMContentLoaded\", () => {\r\n    setTimeout(init, 200);\r\n});\r\n\r\n<\/script>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>DASHINMOPINCODEAIRBAG Categor\u00eda Mostrar todos N\u00b0 MODELO SUBMODELO MARCA CATEGOR\u00cdA<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-3470","page","type-page","status-publish","hentry"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/dumpflashedit.com\/index.php\/wp-json\/wp\/v2\/pages\/3470","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dumpflashedit.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dumpflashedit.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dumpflashedit.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dumpflashedit.com\/index.php\/wp-json\/wp\/v2\/comments?post=3470"}],"version-history":[{"count":134,"href":"https:\/\/dumpflashedit.com\/index.php\/wp-json\/wp\/v2\/pages\/3470\/revisions"}],"predecessor-version":[{"id":5833,"href":"https:\/\/dumpflashedit.com\/index.php\/wp-json\/wp\/v2\/pages\/3470\/revisions\/5833"}],"wp:attachment":[{"href":"https:\/\/dumpflashedit.com\/index.php\/wp-json\/wp\/v2\/media?parent=3470"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}